Python - 跳到匹配的上两行

2 投票
3 回答
2091 浏览
提问于 2025-04-16 05:50

在一个这样的文本文件中:

名字 姓氏 #
第二个名字
地址第一行
地址第二行
工作电话:
家庭电话:
状态:

名字 姓氏 #
....和上面的一样...

我需要找到字符串 '工作电话:',然后向上移动两行,在那一行的开头插入字符 '|'。所以伪代码大概是这样的:

如果行中有 "工作电话:": 向上移动两行: 写入 | + 这一行 写入其余的行。

这个文件大约有10MB,里面大约有1000段这样的内容。然后我需要把它写入另一个文件。所以我想要的结果是:

名字 姓氏 #
第二个名字
|地址第一行
地址第二行
工作电话:
家庭电话:
状态:

谢谢任何帮助。

3 个回答

0

像这样吗?

lines = text.splitlines()
for i, line in enumerate(lines):
    if 'Work Phone:' in line:
        lines[i-2] = '|' + lines[i-2]
0

你可以使用这个正则表达式

(.*\n){2}(Work Phone:)

然后用下面的内容替换匹配到的部分

|\1\2

其实你甚至不需要用Python,任何现代的文本编辑器,比如Vim,都可以做到这一点。

1

这个解决方案不会把整个文件一次性读入内存

p=""
q=""
for line in open("file"):
    line=line.rstrip()
    if "Work Phone" in line:
       p="|"+p
    if p: print p
    p,q=q,line
print p
print q

输出结果

$ python test.py
First Name last name #
secone name
|Address Line 1
Address Line 2
Work Phone:
Home Phone:
Status:

撰写回答