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

替换字符串Python 2.7中的未知字符,python,python-2.7,Python,Python 2.7,如何定义字符(在列表或字符串中),并将任何其他字符替换为。。让我们说一个“?” 例如: strinput = "abcdefg#~" legal = '.,/?~abcdefg' #legal characters while i not in legal: #Turn i into '?' print output 如果这是一个大文件,请分块读取,并应用re.sub(..),如下所示^在类中(方括号)表示否定(类似于说“除此之外的任何内容”) 将合法字符放在一个集合中,然后用于测试字

如何定义字符(在列表或字符串中),并将任何其他字符替换为。。让我们说一个“?”

例如:

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

如果这是一个大文件,请分块读取,并应用
re.sub(..)
,如下所示
^
在类中(方括号)表示否定(类似于说“除此之外的任何内容”)


将合法字符放在一个集合中,然后用于测试字符串的每个字符。使用方法和方法构造新字符串


您希望保留的字符中是否有非ASCII字符?”我的问题是,如何定义字符(在列表或字符串中),并将任何其他字符替换为..比方说“?”,为什么要使用列表或字符串?如果你打算采取这样一种简单的方法,这对一个口授者来说似乎是一份很棒的工作。未定义?捕获一个
keyrerror
并处理它。如果我不知道我不能使用的字符,如何使用字典@两位炼金术士我以为你是说你定义了自己的某种编码,这意味着你将“合法”输入字符映射到定义的输出字符。对我来说,这听起来像是一份完美的口述工作,因此非法字符就是你在口述中查找但它不存在的情况(
try…除了keyrerror:print('this character's not defined')
)现在,我只保留“a-zA-Z0-9和~!@$%^&*()u+-={}[]:“;”/“但我希望能够快速编辑该列表,以防需要允许更多字符或删除字符。例如,由于生成二进制/十六进制的方式,我不能在代码中使用“`”。@mark ransomSorry,我忘了提到我不会直接编辑该文件,而是将内容保存到。”一个字符串。我编辑了我的问题。这里关于StackOverflow的几乎所有答案都是通用的。我相信您可以进一步了解
re.sub(…)
的想法。@AustinSmith-这就满足了您的需要。
>>> import re
>>> char = '.,/?~abcdefg'
>>> re.sub(r'[^' + char +']', '?', "test.,/?~abcdefgh")
'?e??.,/?~abcdefg?'
>>> s = "test.,/?~abcdefgh"
>>> legal = set('.,/?~abcdefg')
>>> s = ''.join(char if char in legal else '?' for char in s)
>>> s
'?e??.,/?~abcdefg?'
>>>