从文本文件中读取
我这里不是想要一个答案,而是想要一些指导,告诉我该如何处理这个任务。
我有一个文本文件,里面包含以下信息:
...
1947q2 -0.6
1947q3 -0.3
1947q4 6.2
1948q1 6.5
1948q2 7.6
1948q3 2.2
1948q4 0.6
...
我的目标是根据关键词来读取这个文本文件。例如,我想读取只包含1947的行,那么输出应该是这样的:
1947q2 -0.6
1947q3 -0.3
1947q4 6.2
因为这些数字和每一年都有关系,我在想把每一行放到一个元组里,然后把所有的元组放到一个列表中。从这个列表里,使用正则表达式来搜索,找到匹配的元组并把它们打印出来。
这样做可以吗?有没有更简单、更明显的解决方案?我并不太在意最优的方法,只是想听听不同的思路,看看该如何处理这个问题。
6 个回答
0
如果输入文件中的数据是固定的——看起来确实是这样——那么像下面这样简单的代码就可以用了:
with open('data.txt') as data:
for line in data:
if line[4:8] == '1947':
print line,
# output:
# 1947q2 -0.6
# 1947q3 -0.3
# 1947q4 6.2
需要注意的是,我使用 print line,
的原因是因为每一行的字符串后面都有一个换行符。
1
你可以做的一件事是 使用生成器,通过一种和你之前做的类似的方法,动态地筛选出列表中的成员:
data = open("file.txt")
fortysevens = (line for line in data if contains_47(line))
for line in fortysevens:
# do something here
def contains_47(line):
# your existing code here to detect if a line contains 47