在这样的文本文件中:
名字姓氏#
secone名称
地址第1行
地址第2行
工作电话:
家庭电话:
状态:
名字姓氏#
......和上面一样......
我需要匹配字符串'Work Phone:'然后向上两行并插入字符'|'在线的开头。所以伪代码是:
如果“工作电话:”排成一行: 上两行: 写| +线 写下其余的一行。
文件大约10 MB,大约有1000个这样的段落。 然后我需要将它写入另一个文件。所以期望的结果将是:
名字姓氏#
secone名称
|地址第1行
地址第2行
工作电话:
家庭电话:
状态:
感谢您的帮助。
答案 0 :(得分: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:
答案 1 :(得分:0)
这样的东西?
lines = text.splitlines()
for i, line in enumerate(lines):
if 'Work Phone:' in line:
lines[i-2] = '|' + lines[i-2]
答案 2 :(得分:0)
您可以使用此正则表达式
(.*\n){2}(Work Phone:)
并用
替换匹配项|\1\2
你甚至不需要Python,你可以在任何现代文本编辑器中做这样的事情,比如Vim。