[英]Replacing all instances of string in string Python
现在我的输出到文件就像:
<b>Nov 22–24</b> <b>Nov 29–Dec 1</b> <b>Dec 6–8</b> <b>Dec 13–15</b> <b>Dec 20–22</b> <b>Dec 27–29</b> <b>Jan 3–5</b> <b>Jan 10–12</b> <b>Jan 17–19</b> <b><i>Jan 17–20</i></b> <b>Jan 24–26</b> <b>Jan 31–Feb 2</b> <b>Feb 7–9</b> <b>Feb 14–16</b> <b><i>Feb 14–17</i></b> <b>Feb 21–23</b> <b>Feb 28–Mar 2</b> <b>Mar 7–9</b> <b>Mar 14–16</b> <b>Mar 21–23</b> <b>Mar 28–30</b>
我想删除所有的“”和css标签(<b>,</ b>)。 我尝试使用.remove和.replace函数,但出现错误:
SyntaxError: Non-ASCII character '\xc2' in file -- FILE NAME-- on line 70, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
上面的输出在一个列表中,该列表是从Webcrawling函数获得的:
def getWeekend(item_url):
dates = []
href = item_url[:37]+"page=weekend&" + item_url[37:]
response = requests.get(href)
soup = BeautifulSoup(response.content, "lxml") # or BeautifulSoup(response.content, "html5lib")
date= soup.select('table.chart-wide > tr > td > nobr > font > a > b')
return date
我将其写到这样的文件中:
for item in listOfDate:
wr.writerow(item)
如何删除所有标签,以便仅保留日期?
我不确定,但是我认为aString.regex_replace('toFind','toReplace')应该可以工作。 要么将其写入文件,然后在其上运行sed,例如:sed -i's / toFind / toReplace / g'
问题是您没有网站上的ASCII字符串。 您需要先将非ASCII文本转换为Python可以理解的文本。
如果有机会,Python将使用Unicode。 如果您只是看看,那里有很多信息。 例如,您可以从本网站上的其他问题中找到更多帮助:
Python:从ISO-8859-1 / latin1转换为UTF-8
您已经有了一个可行的解决方案,但是为了将来:
get_text()
摆脱标签 date = soup.select('table.chart-wide > tr > td > nobr > font > a > b').get_text()
.replace(u'\\xc2',u'')
摆脱Â
。 u
将u'\\xc2'
unicode字符串。 (这可能需要花一些时间来编码,但是对我来说get_Text()
已经返回了unicode对象。) (另外,可能考虑使用.replace(u'\–',u'-')
因为现在,您有一个破折号:P。)
date = date.replace(u'\\xc2',u'').replace(u'\–',u'-')
如果您的Python 2源代码具有文字非ASCII字符(例如Â
,则应按照错误消息中的说明声明源代码编码。 将其放在Python文件的顶部:
# -*- coding: utf-8 -*-
确保使用utf-8编码保存文件,并使用Unicode字符串处理文本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.