尝试使用正则表达式函数删除单词、空格、特殊字符和数字,但不删除与单词/字符串组合的字符。例如
ORIGIN
1 malwmrllp1 lallalwgpd paaafvnghl cgshlvealy lvcgergffy tpktrreaed
61 lqvgqvelgg gpgagslqpl alegslqkrg iveqcctsic slyqlenycn
//
\W+ 删除 malwmrll1 中包括 1 在内的所有数字
import re
text_file = open('mytext.txt').read()
new_txt = re.sub('[\\b\\d+\\b\s*$+\sORIGIN$\W+]', '', text_file)
print(new_txt, len(new_txt))
我的输出是:
malwmrllplallalwgpdpaaafvnghlcgshlvealylvcgergffytpktrreaedlqvgqvelgggpgagslqplalegslqkrgiveqcctsicslyqlenycn 109
所需的输出应为:malwmrll1plallalwgpdpaaafvnghlcgshlvealylvcgergffytpktrreaedlqvgqvelgggpgagslqplalegslqkrgiveqcctsicslyqlenycn 110
最佳答案
正确,根据您想要的结果是否显示下划线,尝试使用 re.findall
和原始字符串表示法。您当前使用的字符类没有意义:
\b(?!(?:ORIGIN|[_\d]+)\b)\w+
在线查看demo
\b
- 字边界;(?!(?:ORIGIN|[_\d]+)\b)
- 带有嵌套非捕获组的负向前瞻,以匹配ORIGIN
或 1 + 尾随字边界之前的下划线/数字组合;\w+
- 1 个以上单词字符。
import re
text_file = """ORIGIN
1 malwmrllp1 lallalwgpd paaafvnghl cgshlvealy lvcgergffy tpktrreaed
61 lqvgqvelgg gpgagslqpl alegslqkrg iveqcctsic slyqlenycn
//"""
new_txt=''.join(re.findall(r'\b(?!(?:ORIGIN|[_\d]+)\b)\w+', text_file))
print(new_txt, len(new_txt))
打印:
malwmrllp1lallalwgpdpaaafvnghlcgshlvealylvcgergffytpktrreaedlqvgqvelgggpgagslqplalegslqkrgiveqcctsicslyqlenycn 110
关于python - 使用 python 正则表达式删除除组合为字符串的数字之外的所有数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72471884/