我正在寻找类似 pythonTRIM()
的东西,但.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. xc2xa0'
>>> 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('xc2xa0').strip()
?
由于您使用的是 Python 2.7,请先将字符串转换为 unicode,然后去除:
s = unicode('test xc2xa0', "UTF-8")
s.strip()
收益 率:
u'test'
这将导致 Python 将xc2xa0
识别为 Unicode 不间断空格字符,并正确修剪它。
如果没有这个,Python假设它是一个ASCII字符串,并且在该字符集中xc2
和xa0
不是空格。
我建议你使用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())