仅保留字母数字字符和预定义的特定字符

时间:2015-12-10 13:53:17

标签: regex python-2.7

我有一个混合编码文件,我只想保留字母数字和一些字符,如:。(点),/(破折号),|(垂直条),空格(不包括\ t,\ n) , \F)。其他字符应替换为空格。结果内容将出现在另一个文件中。

以下是我的代码:

def clean(input):
    string_list = list(input)
    for idx in range(0, len(string_list)):
        if not re.match("\w|\s|\||\.|/", string_list[idx]):
            string_list[idx] = " "
    return "".join(string_list)
file_in = "input.txt"
file_out = "output.txt" 
with open(file_in, "r") as f1:
    with open(file_out, "w") as f2:
        lines = f1.readlines()
        for line in lines:
            line_raw = clean(line)
            f2.write(line_raw)
print "Finished!"

我注意到我的输出文件仍然包含一些特殊字符,例如“换页”或“换行”(它们应该删除)。 是否仍然存在某些不可见的Unicode字符? 我怀疑我应该以二进制模式读取文件并使用带有这个链接的字节的正则表达式: python: regular expression search pattern for binary files (half a byte) 但我还没有成功。我怎样才能达到目的?

edit1:我上面提到的空格应该是“真正的空白区域”(当我们使用空格键时生成,而不是\ t,\ n,\ f等)

1 个答案:

答案 0 :(得分:0)

因为您无法发布数据 试试这个

>>> import re
>>> test_text = 'grep -i 'blair' filename.log | more'
>>> print re.sub(r'[^|\w\.]', ' ', test_text)
'grep  i  blair  filename.log   more'