替换字符串Python

时间:2015-06-27 21:38:02

标签: python beautifulsoup web-crawler

现在我对文件的输出如下:

<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)

如何删除所有标记以便只留下日期?

4 个答案:

答案 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

python: unicode in Windows terminal, encoding used?

What is the difference between encode/decode?

答案 2 :(得分:1)

你已经有了一个有效的解决方案,但未来:

  1. 使用get_text()删除标记

    date = soup.select('table.chart-wide > tr > td > nobr > font > a > b').get_text()

    1. 使用.replace(u'\xc2',u'')删除Âu使u'\xc2'成为一个unicode字符串。 (这可能会对编码有所了解,但对我来说get_Text()已经返回了一个unicode对象。)
    2. (另外,可能会考虑.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字符串处理文本。