关于正则表达式:使用Python替换文本文件中的文件名以外的所有文件路径

Replace All Filepath Except Filename in Text file using Python

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

例如:

来自:

Lorem Ipsum Dolor Sit Amet,Concetteur Adipiscing Elit,Sed Do Eiusmod公司临时工,临时工/home/student/users/user_3/question_4/test.py magna aliqua.但伊尼姆和米尼姆·维尼姆,诺斯特鲁德实习实验室随之而来。杜伊斯·奥特·艾尔·多尔在《欲望都市》中受到谴责cillum dolore eu fugiat nulla pariatur./home/student/users/user_3/question_4/test.py excepteur sint occaccat cupidatat non不畏艰险,无忧无虑,无忧无虑。

到:

Lorem Ipsum Dolor Sit Amet,Concetteur Adipiscing Elit,Sed Do Eiusmod公司临时工,临时工试验.py magna aliqua.但只有一个小的鹿肉,诺斯特鲁德实习实验室随之而来。杜伊斯·奥特·艾尔·多尔在《欲望都市》中受到谴责cillum dolore eu fugiat nulla pariatur.test.py,excepteur sint occacacat cupidatat non不畏艰险,无忧无虑,无忧无虑。

我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
2
3
4
5
6
7
8
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')