从python字符串中删除\ xa0,\ n,\ t \ t

时间:2014-09-30 17:52:57

标签: python string unicode

我有一个列表项,我已经转换为字符串:

[u'\n                      Door:\xa0Novum          \t      ']

我需要删除所有内容,以便我离开

Door:Novum

我尝试了各种方法:

string = string.replace("\xa0", "")
string.rstrip('\n')
string.translate(string.maketrans("\n\t", ""))

我显然做错了什么,但无法弄清楚是什么

1 个答案:

答案 0 :(得分:5)

您需要存储返回值;字符串是不可变的,因此方法返回一个应用了更改的新字符串。

您可以翻译所有这些字符,但请使用方法的unicode形式:

toremove = dict.fromkeys((ord(c) for c in u'\xa0\n\t '))
outputstring = inputstring.translate(toremove)

我假设你也想摆脱空间

演示:

>>> inputstring = u'\n                      Door:\xa0Novum          \t      '
>>> toremove = dict.fromkeys((ord(c) for c in u'\xa0\n\t '))
>>> outputstring = inputstring.translate(toremove)
>>> outputstring
u'Door:Novum'

更好的方法仍然是使用str.split(),然后再次加入:

outputstring = u''.join(inputstring.split())

\xa0,空格,制表符和换行符都包含在str.split()将拆分的内容中,以及回车符。

演示:

>>> u''.join(inputstring.split())
u'Door:Novum'

这更好,因为这项工作比使用str.translate()更快批次

>>> import timeit
>>> timeit.timeit('inputstring.translate(toremove)', 'from __main__ import inputstring, toremove')
3.4527599811553955
>>> timeit.timeit('u"".join(inputstring.split())', 'from __main__ import inputstring')
0.5409181118011475