在文件中查找字符串并打印多行

2024-05-17 05:06:28 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我有一个名为data的文件夹,文件夹中有.txt文件,是美国各州的缩写。这些文件有前几个最流行的名字,为当年和国家。随机文件中的几行

AK,F,1910,Mary,14 

AK,F,1910,Annie,12 

AK,F,1910,Anna,10

AK,F,1910,Margaret,8

AK,F,1910,Helen,7

AK,F,1910,Elsie,6

AK,F,1910,Lucy,6

AK,F,1910,Dorothy,5

AK,F,1911,Mary,12

AK,F,1911,Margaret,7

AK,F,1911,Ruth,7

AK,F,1911,Annie,6

AK,F,1911,Elizabeth,6

AK,F,1911,Helen,6

我的任务是在用户给定的年份范围内找到最流行的名字(性别也由用户给定)。正如你所看到的,最流行的名字是第一个写着新年的名字。我的代码如下:

def getTopNames(state, gender, startYear, endYear):
    names = []
    file = open("data/" + state + ".TXT")
    with open(file) as f:
        for line in f:
            if startYear and gender in line:
                names.append(line.split(","))
                if startYear < endYear:
                    startYear += 1
                    names.append(line.split(","))
    print ( lstAll )

这是我得到的错误:

File "C:/Python34/CS1 WORK/top_names.py", line 53, in getTopNames
   with open(file) as f:
 TypeError: invalid file: <_io.TextIOWrapper name='data/NY.TXT' mode='r' encoding='cp1252'>

我做错什么了?我确保数据文件与我的.py文件在同一个文件中。你知道吗


Tags: 文件in文件夹datanameslineopen名字
1条回答
网友
1楼 · 发布于 2024-05-17 05:06:28

您试图打开文件两次:

file = open("data/" + state + ".TXT")
with open(file) as f:

而且应该使用

filename = "data/" + state + ".TXT"
with open(filename) as f:

然后,排队

if startYear and gender in line:

不像你想的那样管用。它实际上意味着

if (startYear) \ # true if startYear is non-zero/nonempty
and (gender in line): # true if the letter M/F occurs *anywhere* in the line

你想要这样的东西吗

items = line.split(",")
if str(startYear) in items and gender in items:

相关问题 更多 >