Python - 跳到匹配的上两行
在一个这样的文本文件中:
名字 姓氏 #
第二个名字
地址第一行
地址第二行
工作电话:
家庭电话:
状态:
名字 姓氏 #
....和上面的一样...
我需要找到字符串 '工作电话:',然后向上移动两行,在那一行的开头插入字符 '|'。所以伪代码大概是这样的:
如果行中有 "工作电话:": 向上移动两行: 写入 | + 这一行 写入其余的行。
这个文件大约有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: