【问题标题】:Unwanted characters in regular expressions python正则表达式python中不需要的字符
【发布时间】:2014-12-27 15:34:46
【问题描述】:

所以,我有一个包含 XML 字符串的站点,我希望我的程序返回出现在两个字符串之间的字符串列表。这是我的代码:

 response = requests.get(url)


 artists=re.findall(re.escape('<name>')+'(.*?)'+re.escape('</name>'),str(response.content))
 print(artists)

这会返回一个字符串列表。问题是,某些字符串中包含不需要的字符。例如,列表中的一个字符串是“Somethin\\' \\'Bout A Truck”,我希望它是 'Somethin' 'Bout A Truck'。

提前致谢。

【问题讨论】:

  • have a site that has an XML string, bs4呢?
  • 我会调查的,谢谢。

标签: regex python-3.x python-requests


【解决方案1】:

我认为beautiful soup(bs4) 会解决这个问题,它也会支持更高版本的python 3.4

【讨论】:

    【解决方案2】:

    从您的角度来看,这些转义符(单个反斜杠,每个都显示为 \\)可能是“不需要的”,但它们无疑“存在”在您收到的响应中。因此,如果字符存在但不需要,您可以删除它们,例如使用 str(response.content)

    str(response.content).replace('\\'. '')
    

    如果您真正想要做的是删除所有此类转义(如果您想做一些与此不同的事情,您最好解释一下它是什么:-)。

    BeautifulSoup4 在接受的答案中推荐,虽然确实是一个不错的包,但 not 是否会肆意删除输入中存在的字符 - 它无法读懂你的想法,所以它不能知道什么是你“不想要的”。例如:

    >>> import bs4
    >>> s = '<name>Somethin\\\' \\\'Bout A Truck</name>'
    >>> soup = bs4.BeautifulSoup(s)
    >>> print(soup)
    <name>Somethin\' \'Bout A Truck</name>
    >>> 
    

    如您所见,转义(反斜杠)仍然存在于单引号之前。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-06
      • 2021-08-29
      • 1970-01-01
      相关资源
      最近更新 更多