Python - 转到匹配上面的两行

时间:2010-10-21 08:49:25

标签: python

在这样的文本文件中:

名字姓氏#
secone名称
地址第1行 地址第2行
工作电话:
家庭电话:
状态:

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

我需要匹配字符串'Work Phone:'然后向上两行并插入字符'|'在线的开头。所以伪代码是:

如果“工作电话:”排成一行:    上两行:        写| +线 写下其余的一行。

文件大约10 MB,大约有1000个这样的段落。 然后我需要将它写入另一个文件。所以期望的结果将是:

名字姓氏#
secone名称
|地址第1行 地址第2行
工作电话:
家庭电话:
状态:

感谢您的帮助。

3 个答案:

答案 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。