如何删除从文本文件中读取的行中的特殊字符和字母,同时保留空格?假设我们在一个文件中有以下内容:
16 ` C38# 26535 26535 2010 4 14 2 7 7 38^@1 2 15 100 140 30 $ 14^] (2003年2!-6�021 0�14!2 3!1 0 35454 0$ ^@0 0 "0 "63 194 (56188 26 27“24 0 0 10�994!8 58 0 0”�0 32�47 32767 32767!1
输出结果基本上应该是:
16 38 26535 2010年4 14 2 7 7 3 8 1 2 15 100 140 30 14 2003 2 -6 021 014 2 3 1 0 35454 0 0 0 63 194 56 188 26 27 24 0 0 10 994 8 58 0 0 0 32 47 32767 32767 1
做这件事最直接的方法是什么?
发布于 2010-07-14 11:08:04
import re
output_string = re.sub(r'[^\d\s-]', '', input_string)模式[^\d\s-]将匹配除数字、破折号或空格以外的任何内容-因此,用空字符串替换任何匹配项将删除除数字(包括减号)和空格之外的所有内容。
发布于 2010-07-14 11:08:55
如果您只想保留数字、加号和减号以及所有空格,最简单的方法可能是
import re
...
line = re.sub(r'[^\d\s+-]+', '', line)其内容为“将每个序列中的一个或多个非数字非空格替换为空”。
字符串的translate方法会更快,但它的设置就不那么简单了,所以,既然您要求“简单”,我建议使用re方法(现在准备好迎接re-haters的尖叫声...;-)。
发布于 2010-07-14 11:15:51
''.join([x for x in s if x in string.digits+string.whitespace])或者,如果你真正想要的是一个数字列表:
import re
re.findall('\d+',s)https://stackoverflow.com/questions/3243131
复制相似问题