Python - 替换字符串中的非 ASCII 字符 (»)

标签 python regex string encoding decoding

我需要用空格替换字符串中的字符“»”,但我仍然遇到错误。这是我使用的代码:

# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup

# other code

soup = BeautifulSoup(data, 'lxml')
mystring = soup.find('a').text.replace(' »','')

UnicodeEncodeError: 'ascii' codec can't encode character u'\xbb' in position 13: ordinal not in range(128)

但是如果我用其他脚本测试它:

# -*- coding: utf-8 -*-
a = "hi »"
b = a.replace('»','') 

它有效。为什么会这样?

最佳答案

为了使用str.replace()方法替换字符串的内容;您需要先解码字符串,然后替换文本并将其编码回原始文本:

>>> a = "hi »"
>>> a.decode('utf-8').replace("»".decode('utf-8'), "").encode('utf-8')
'hi '

您还可以使用以下正则表达式从字符串中删除所有非 ascii 字符:

>>> import re
>>> re.sub(r'[^\x00-\x7f]',r'', 'hi »')
'hi '

关于Python - 替换字符串中的非 ASCII 字符 (»),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40872126/

相关文章:

python - 解析 Python 3.x 中的转义字符

Python如何在字符串中每次有一大块数字时分割列

python - 带破折号的 Django/Python url 正则表达式

python - 在字符串中查找子字符串旁边的所有分隔符并在 python 中替换

javascript - 如何在不使用索引器(javascript)的情况下访问数组的元素?

r - 根据另一列中值的最后 2 位数字创建新列

在不知道缓冲区大小的情况下将整数转换为字符串

python - 如何返回列表中以 "b"开头的第二个元素

python - requests.post 的自定义 JSONEncoder

python - docker/matplotlib : RuntimeError: Invalid DISPLAY variable