2015-06-27 255 views
0

现在我的输出到一个文件是这样的:替换字符串的所有实例的字符串的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> 

我想删除所有“A”和CSS标签(< B>,</B>) 。我尝试过使用卸下摆臂和.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) 

如何删除所有标签,以便只剩下日期?

+1

什么是页面编码? –

回答

1

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

  1. 使用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'\u2013',u'-'),因为现在,你有一个短破折号:P)

    date = date.replace(u'\xc2',u'').replace(u'\u2013',u'-')

    1

    我不确定,但我认为aString.regex_replace('toFind','toReplace')应该可以工作。或者将它写入文件,然后在其上运行sed:sed -i's/toFind/toReplace/g'

    +0

    谢谢,我只是使用Excel的查找和替换功能,只是试了一下,它的超级简单。 – alphamonkey

    0

    如果你的Python 2源代码有文字非ASCII字符,如Â那么你应该为错误消息指出声明的源代码编码。把你的Python文件的顶部:

    # -*- coding: utf-8 -*- 
    

    确保文件被保存使用UTF-8编码和使用Unicode字符串与文本的工作。

    +0

    如果你是一个比emacs更多的VIm用户,你可以把它放在顶端:''#vim:set fileencoding = utf8:''。 – bufh

    +0

    @bufh:Python只要匹配['“coding [:=] \ s *([ - \ w。] +)”'正则表达式] [https://www.python.org/开发/ PEPS/PEP-0263 /)。 – jfs

    相关问题