替换字符串Python 2.7中的未知字符

时间:2016-09-05 02:54:50

标签: python python-2.7

如何定义字符(在LIST或STRING中),并将任何其他字符替换为..让我们说'?'

示例:

strinput = "abcdefg#~"
legal = '.,/?~abcdefg' #legal characters
while i not in legal:
    #Turn i into '?'
print output

2 个答案:

答案 0 :(得分:4)

将合法字符放入集合中,然后使用in测试字符串的每个字符。使用str.join()方法和conditional expression构建新字符串。

>>> s = "test.,/?~abcdefgh"
>>> legal = set('.,/?~abcdefg')
>>> s = ''.join(char if char in legal else '?' for char in s)
>>> s
'?e??.,/?~abcdefg?'
>>> 

答案 1 :(得分:1)

如果这是一个大文件,请读取数据块,然后应用re.sub(..),如下所示。一个类中的^(方括号)代表否定(类似于说"&#34以外的任何东西;)

>>> import re
>>> char = '.,/?~abcdefg'
>>> re.sub(r'[^' + char +']', '?', "test.,/?~abcdefgh")
'?e??.,/?~abcdefg?'