2 回答

TA贡献1860条经验 获得超8个赞
由于您使用的是 Python 2.7,首先将您的字符串转换为 unicode,然后剥离:
s = unicode('test \xc2\xa0', "UTF-8")
s.strip()
产量:
u'test'
这将导致 Python 将 识别\xc2\xa0为 Unicode 不间断空格字符,并正确修剪它。
没有它,Python 会假定它是一个 ASCII 字符串,并且在该字符集中\xc2,\xa0而不是空格。

TA贡献1853条经验 获得超9个赞
我建议您使用该replace功能。你可以这样做:
s1 = s1.replace('\xc2', '').replace('\xa0', '')
如果您要修剪大量可能的字符,则可以封装此逻辑:
def replace_many(base_string, *to_remove):
result = base_string
for r in to_remove:
result = result.replace(r, '')
return result
replace_many(s, '\xc2', '\xa0') == s2.strip()
>>> True
您还可以使用reduce以下方法实现:
# In Python 2
result = reduce(lambda a, r: a.replace(r, ''), ['\xc2', '\xa0'],
initializer = base_string.strip())
# In Python 3
import functools
result = functools.reduce(lambda a, r: a.replace(r, ''), ['\xc2', 'xa0'],
base_string.strip())
添加回答
举报