我在某件事上遇到了一个特定的问题,我希望你们可以提出更好的方法。
对于我正在阅读的每一行文件,我想获取该行的第 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)
谢谢