TRIM in python 用于所有空格字符



我正在寻找类似 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字符串,并且在该字符集中xc2xa0不是空格。

我建议你使用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())

最新更新