我正在python中寻找类似TRIM()
的东西,但是.strip()
并没有完成。这是一个示例:
>>> s.strip()
'Elvis Presley made his film debut in this tale of three brothers who,
while serving in the Confederate Army, steal a Union Army payroll. \xc2\xa0'
>>> s2.strip()
'Elvis Presley made his film debut in this tale of three brothers who,
while serving in the Confederate Army, steal a Union Army payroll.'
>>> s.strip()==s2.strip()
False
我该如何完成上述工作-在文本的边缘处修剪所有空白字符-我可以在其中获得s.trim() == s2.trim()
(而不是仅做些杂乱的s.strip('\xc2\xa0').strip()
?
答案 0 :(得分:2)
由于您使用的是Python 2.7,请先将您的字符串转换为unicode,然后剥离:
s = unicode('test \xc2\xa0', "UTF-8")
s.strip()
产量:
u'test'
这将使Python将\xc2\xa0
识别为Unicode不间断空格字符,并对其进行适当的修剪。
否则,Python会假定它是一个ASCII字符串,并且其中的字符集\xc2
和\xa0
不是空格。
答案 1 :(得分:0)
我建议您使用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())