鱼C论坛

 找回密码
 立即注册
查看: 1390|回复: 5

[已解决]求教这段代码什么意思!各位大神求详解

[复制链接]
发表于 2017-12-1 17:12:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
r = requests.get(urls).content
pattern = re.compile('<cite>(.*?)</cite>')
a = re.findall(pattern,r)
b = '\n'.join(a).replace('<strong>', '').replace('</strong>', '')

求教这段代码什么意思!各位大神求详解

  1. r = requests.get(urls).content
  2. pattern = re.compile('<cite>(.*?)</cite>')
  3. a = re.findall(pattern,r)
  4. b = '\n'.join(a).replace('<strong>', '').replace('</strong>', '')
复制代码
最佳答案
2017-12-1 17:28:22
本帖最后由 YY杰 于 2017-12-1 17:35 编辑

  1. r = requests.get(urls).content                        # 把地址-urls中的文字内容保存到变量 r 里
  2. pattern = re.compile('<cite>(.*?)</cite>')  # 定义非贪婪模式的正则表达式
  3. a = re.findall(pattern,r)                                # 按照表达式从r中抽取所有以“<cite>”开头,以“</cite>”结尾的字符串片段(但不包含头尾),将所有字符串片段保存到列表(list)a中
  4. b = '\n'.join(a).replace('<strong>', '').replace('</strong>', '')        # 这块分两部分说①b='\n'.join(a)  --> 把列表a中的字符串元素用换行符('\n')连起来,变成一个大字符串
  5. # .replace('<strong>', '').replace('</strong>','') # ②把连起来的大字符串中,所有'<strong>'和'</strong>'替换成空字符'',换句话说就是去掉大字符串中的上述两个子串
  6. """
  7. 举个例子
  8. 假设r的内容为 " 123<cite>123<strong></strong>12</cite>abc -----\n <cite>456</strong>45</cite>789</cite>"
  9. 那么a的内容就是["123<strong></strong>12", "456</strong>45"]   #最后的</cite>会被无视
  10. 经过join之后的大字符串就是 "123<strong></strong>12\n456</strong>45"  
  11. 再经过replace就变成了"12312\n45645"  

  12. """
复制代码
  

总结来说就是从一段xml中找到所有符合<cite>...</cite>的句式,抠出来其中的内容用换行符连接成新的字符串,并且去掉其中的<strong>和</strong>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-12-1 17:28:22 | 显示全部楼层    本楼为最佳答案   
本帖最后由 YY杰 于 2017-12-1 17:35 编辑

  1. r = requests.get(urls).content                        # 把地址-urls中的文字内容保存到变量 r 里
  2. pattern = re.compile('<cite>(.*?)</cite>')  # 定义非贪婪模式的正则表达式
  3. a = re.findall(pattern,r)                                # 按照表达式从r中抽取所有以“<cite>”开头,以“</cite>”结尾的字符串片段(但不包含头尾),将所有字符串片段保存到列表(list)a中
  4. b = '\n'.join(a).replace('<strong>', '').replace('</strong>', '')        # 这块分两部分说①b='\n'.join(a)  --> 把列表a中的字符串元素用换行符('\n')连起来,变成一个大字符串
  5. # .replace('<strong>', '').replace('</strong>','') # ②把连起来的大字符串中,所有'<strong>'和'</strong>'替换成空字符'',换句话说就是去掉大字符串中的上述两个子串
  6. """
  7. 举个例子
  8. 假设r的内容为 " 123<cite>123<strong></strong>12</cite>abc -----\n <cite>456</strong>45</cite>789</cite>"
  9. 那么a的内容就是["123<strong></strong>12", "456</strong>45"]   #最后的</cite>会被无视
  10. 经过join之后的大字符串就是 "123<strong></strong>12\n456</strong>45"  
  11. 再经过replace就变成了"12312\n45645"  

  12. """
复制代码
  

总结来说就是从一段xml中找到所有符合<cite>...</cite>的句式,抠出来其中的内容用换行符连接成新的字符串,并且去掉其中的<strong>和</strong>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-2 10:00:28 | 显示全部楼层
YY杰 发表于 2017-12-1 17:28
总结来说就是从一段xml中找到所有符合...的句式,抠出来其中的内容用换行符连接成新的字符串,并且 ...

怎么转为python3的写法啊??

我是初学改后报 TypeError: cannot use a string pattern on a bytes-like object
百度了一下没找到答案
怎么解决额?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-2 10:47:44 | 显示全部楼层
takehsi 发表于 2017-12-2 10:00
怎么转为python3的写法啊??

我是初学改后报 TypeError: cannot use a string pattern on a bytes-li ...
  1. #py2:
  2. r = requests.get(urls).content
  3. #py3:
  4. import urllib.request as urlr
  5. r = urlr.urlopen(urls).read()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-2 14:20:39 | 显示全部楼层

一直提示
TypeError: cannot use a string pattern on a bytes-like object
这个错误怎么解决??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-2 14:57:58 | 显示全部楼层
takehsi 发表于 2017-12-2 14:20
一直提示
TypeError: cannot use a string pattern on a bytes-like object
这个错误怎么解决??

已解决  谢谢了!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-30 21:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表