现在我对文件的输出如下:
<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标记(&lt; b&gt;,&lt; / b&gt;)。我尝试使用.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
上面的输出位于列表中,我从网络抓取功能中获取:
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)
如何删除所有标记以便只留下日期?
答案 0 :(得分:1)
我不确定,但我认为aString.regex_replace('toFind','toReplace')应该可行。或者将其写入文件,然后在其上运行sed,如:sed -i's / toFind / toReplace / g'
答案 1 :(得分:1)
问题是您没有来自网站的ASCII字符串。您需要在操作之前将非ASCII文本转换为Python可以理解的内容。
如果有机会,Python将使用Unicode。如果您只是看看,那里有大量的信息。例如,您可以在本网站上找到其他问题的更多帮助:
Python: Converting from ISO-8859-1/latin1 to UTF-8
答案 2 :(得分:1)
你已经有了一个有效的解决方案,但未来:
get_text()
删除标记 li>
醇>
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'\u2013',u'-')
,因为现在你有一个短划线:P。)
date = date.replace(u'\xc2',u'').replace(u'\u2013',u'-')
答案 3 :(得分:0)
如果您的Python 2源代码具有文字非ASCII字符,例如Â
,那么您应该声明源代码编码,如错误消息所示。放在Python文件的顶部:
# -*- coding: utf-8 -*-
确保使用utf-8编码保存文件,并使用Unicode字符串处理文本。