使用python从文本文件中提取细节

时间:2013-03-18 22:07:17

标签: python parsing

我有一个.txt文件,其中的内容属于这种类型:

DIRN straight-2
FOR minutes-5
DO crossing-6
WHAT Hall-7-13
DO take-10
WHAT Hall-3-15

我想要的是另一个.txt文件,可以在python的帮助下生成,将其作为最终内容:

DIRN straight
FOR minutes
DO crossing
WHAT Hall-7
DO take
WHAT Hall-3

即,我想删除每行中包含连字符的最后一个连字符“ - ”之后的所有内容。

请帮我解决python代码,并提前感谢您的帮助。

1 个答案:

答案 0 :(得分:7)

在Python 2或3中,这有效:

s='''DIRN straight-2
FOR minutes-5
DO crossing-6
WHAT Hall-7-13
DO take-10
WHAT Hall-3-15'''

import re

for line in s.splitlines():
    line=re.sub(r'^(.*)-\d+$',r'\1',line)
    print line

你可以用这种方式在Python中执行非正则表达式:

for line in s.splitlines():
    line=line.rpartition('-')[0] if '-' in line else line
    print(line)

或者 - 可能还是更好:

for line in s.splitlines():
    line=line[:line.rindex("-")] if '-' in line else line    
    print line

正则表达式更具体,因为它只匹配字符串末尾的-\d+

任何情况下,打印:

DIRN straight
FOR minutes
DO crossing
WHAT Hall-7
DO take
WHAT Hall-3