使用Python替换文本文件中除文件名之外的所有文件路径

时间:2015-11-29 10:29:07

标签: python regex linux path

我有如下文本文件。我想删除所有文件路径,除了保留文件名。我需要通读文件并删除任何文件路径。它只是为了向用户显示文件内容的错误。因此,使用文件路径显示是一个安全问题。

例如:

发件人:

Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore   /home/student/users/user_3/question_4/test.py magna aliqua。 Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor in repreptderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。 /home/student/users/user_3/question_4/test.py Excepteur sint occaecat cupidatat non 事故,在culpa qui officia deserunt mollit anim id est laborum中起诉。

Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore   test.py magna aliqua。 Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor in repreptderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。 test.py Excepteur sint occaecat cupidatat non 事故,在culpa qui officia deserunt mollit anim id est laborum中起诉。

我的代码:

import re

data = open('error.txt')
d = open('error1.txt', 'a+')

for line in data.readlines():
    if re.search(r'^[\S]+[_\d][\S]/', line):
        d.write(re.sub(r'^[\S]+[_\d][\S]/', '', line))
    elif re.search(r'^[\w]+[\s][\S][\S]+[_\d]\S/', line):
        d.write(re.sub(r'^[\w]+[\s][\S][\S]+[_\d]\S/', '', line))
    else:
        d.write(line)
d.close()
data.close()

print open('error1.txt').read()

1 个答案:

答案 0 :(得分:2)

试试这个。

import re
ere = re.compile(r'(^|[\"\s\W])\/[\w\.\/]+?\/([^\/"\s]+)([\"\s:]|$)', re.I)

def get_text_without_filepath(filename):
    with open(filename, 'r') as f:
        return ere.sub("\g<1>\g<2>\g<3>", f.read())

get_text_without_filepath('my_file_with_error.txt')