繁体   English   中英

替换字符串Python中的所有字符串实例

[英]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

Python:在Windows终端中使用unicode,使用编码吗?

编码/解码有什么区别?

您已经有了一个可行的解决方案,但是为了将来:

  1. 使用get_text()摆脱标签

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

  1. 使用.replace(u'\\xc2',u'')摆脱Â uu'\\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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM