我有以下字符串:
my_str = "1,123_$ABC_NN&_XX,154440480,YVH?ADXX,,503,TCCTGA,503,TATCCTCT,,,154440480"
我想保留所有 A-Z、0-9、破折号和下划线,并用破折号替换其他所有内容。执行此操作的最佳 Python 方法是什么?
我已经这样做了,它有效,但很困惑:
my_str.replace('#','-').replace('!','-').replace('"','-').replace('$','-').replace('%','-').replace('^','-').replace('&','-').replace('*','-').replace('(','-').replace(')','-').replace('@','-').replace('~','-').replace(';','-').replace(':','-').replace('[','-').replace(']','-').replace('{','-').replace('}','-').replace('?','-').replace('/','-').replace('>','-').replace('<','-').replace('|','-').replace('\\','-').replace(' ','-')
最佳答案
您可以使用:
>>> my_str = "1,123_$ABC_NN&_XX,154440480,YVH?ADXX,,503,TCCTGA,503,TATCCTCT,,,154440480"
>>> re.sub(r'[^\w-]', '-', my_str)
'1-123_-ABC_NN-_XX-154440480-YVH-ADXX--503-TCCTGA-503-TATCCTCT---154440480'
如果您想避免使用多个连字符,则:
>>> re.sub(r'[^\w-]+', '-', my_str)
'1-123_-ABC_NN-_XX-154440480-YVH-ADXX-503-TCCTGA-503-TATCCTCT-154440480'
[^\w-]
匹配任何非单词字符的字符(包括 [a-zA-Z0-9_]
和连字符。
关于python - 用破折号替换任何非 A-Z、非数字的最佳 Python 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36160640/