替换字符串 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 标签(、)。我尝试使用 .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)
如何删除所有标签,只留下日期?
我不确定,但我认为 aString.regex_replace('toFind', 'toReplace') 应该可行。或者将其写入文件,然后 运行 像这样对它进行 sed:sed -i 's/toFind/toReplace/g'
问题是您没有来自该网站的 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?
您已经有了一个可行的解决方案,但对于未来:
- 使用
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'-')
如果您的 Python 2 源代码具有文字非 ASCII 字符,例如 Â
,那么您应该按照错误消息所述声明源代码编码。放在 Python 文件的顶部:
# -*- coding: utf-8 -*-
确保使用 utf-8 编码保存文件并使用 Unicode 字符串处理文本。
现在我输出到一个文件是这样的:
<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 标签(、)。我尝试使用 .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)
如何删除所有标签,只留下日期?
我不确定,但我认为 aString.regex_replace('toFind', 'toReplace') 应该可行。或者将其写入文件,然后 运行 像这样对它进行 sed:sed -i 's/toFind/toReplace/g'
问题是您没有来自该网站的 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?
您已经有了一个可行的解决方案,但对于未来:
- 使用
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'-')
如果您的 Python 2 源代码具有文字非 ASCII 字符,例如 Â
,那么您应该按照错误消息所述声明源代码编码。放在 Python 文件的顶部:
# -*- coding: utf-8 -*-
确保使用 utf-8 编码保存文件并使用 Unicode 字符串处理文本。