读取文件并从每行文件中获取特定值

时间:2013-09-20 22:29:17

标签: python regex file-io for-loop

我在某事上遇到了一个特定的问题,我希望你们能提出更好的方法。

对于我正在阅读的每一行文件,我想获得该行的第n个单词,将其存储并打印在一行上。

我有以下代码:

import os

p = './output.txt'

word_line = ' '

myfile = open(p, 'r')
for words in myfile.readlines()[1:]: # I remove the first line because I don't want it
    current_word = words.strip().split(' ')[4]
    word_line += current_word
    print word_line
myfile.close()

它读取的文件如下所示:

1 abc-abc.abc (1235456) [AS100] bla 123 etc
2 abc-abc.abc (1235456) [AS10] bla 123 etc
3 abc-abc.abc (1235456) [AS1] bla 123 etc
4 abc-abc.abc (1235456) [AS56] bla 123 etc
5 abc-abc.abc (1235456) [AS8] bla 123 etc
6 abc-abc.abc (1235456) [AS200] bla 123 etc
etc

我当前的代码输出以下内容:

[AS100][AS10][AS1][AS56][AS8][AS200]

唯一的问题是,它并不总是固定为线的第4个值,因为有时它会显示为第5个等,或者根本不显示。

我目前正在尝试:

if re.match("[AS", words):
    f_word = re.match(".*[(.*)",words)

这没有用,我试图看看在当前行中它是否找到一个打开的“[”如果它在关闭之前显示它的内容“]。转到新行并且继续这样做。

最终有以下所需的输出:

AS100 AS10 AS1 AS56 AS8 AS200

我真的可以对此提出一些建议。感谢

编辑:

m = re.search(r'\[AS(.*?)]', words)
if m:
    f_word += ' ' + m.group(1)

由于

1 个答案:

答案 0 :(得分:1)

[是正则表达式中的特殊字符,表示字符类的开头。逃避它。

m = re.search(r'\[AS(.*?)]', words)
if m:
    f_word = m.group(1)