【问题标题】:python string.replace() a string + 12 characters followingpython string.replace() 一个字符串 + 12 个字符
【发布时间】:2013-07-13 20:13:44
【问题描述】:

我正在使用 python 从 IMDb 中刮取一些信息,并希望用空格替换给定的文本 + 12 个字符。这可能吗?这是一个例子:

我有字符串

'<a href="/name/nm2142796/">Santino Rice</a> tells Roxxxy Andrews that she was "like Chewbaca in drag."'

并且想用'' 替换'&lt;a href="/name/nm2142796/"&gt;',但是有没有办法做类似的事情:

string.replace('<a href="/name/'+12,'')

它出现了很多,但 nm####### 总是不同的(虽然它总是在 nm 后面 7 位)。

【问题讨论】:

  • &lt;/a&gt; 呢?
  • 是的,虽然string.replace('&lt;/a&gt;','')哈哈,这很容易
  • 您是否阅读过Conditions of Use机器人和屏幕抓取:您不得在本网站上使用数据挖掘、机器人、屏幕抓取或类似的数据收集和提取工具,除非得到我们如下所述的明确书面同意。
  • ...尤其是因为有一个API...

标签: python string replace


【解决方案1】:

这正是您的要求:

import re
re.sub('<a href="/name/.{9}', '', string)

替换字符串和另外 9 个字符。

re.sub('<a href="/name/[^>]*>',  '', string)

也可以工作,不依赖于多个字符。

当然,最好使用 html 解析而不是尝试使用字符串操作来清理 html。例如BeautifulSoup,或者lxmlhtmlparser...选择一个。

【讨论】:

  • 啊当然,正则表达式。由于某种原因,我什至没有出现在我的脑海中。谢谢!
  • 将是{12},但包含额外的/"&gt;
  • 啊,没有办法不止一次吗?
【解决方案2】:

如果你不想使用正则表达式,你可以这样做:

string.replace('<a href="/name/','')[12:]

或者您可以使用正则表达式替换:

import re
re.sub(r'<a href="/name/nm[\d]+/">', '', string)

【讨论】:

  • 好吧,正则表达式不太麻烦,但string.replace('&lt;a href="/name/','')[12:] 是如何工作的?我似乎无法让它工作......
  • 另外,请参阅我对 mata 答案的评论,有没有办法让正则表达式替换所有出现的地方?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-29
  • 2019-02-24
  • 1970-01-01
  • 2021-05-20
  • 1970-01-01
  • 2021-06-13
相关资源
最近更新 更多