1

当用户输入特定字符串时,我试图让文本文件打印出某些行。这就是我所拥有的:

userfile = open("hk.csv","rU")
userfile = userfile.readline()

id_str = input("type in the id#: ")

for n in userfile:
    if id_str in userfile.startswith(id_str):
        print(n)

这是一个示例文本文件:

"id#","name"
"1","ball"
"2", "tee"
"3", "cart"
"4", "club"

假设用户输入"3"为他们的 ID#。然后我将不得不返回类似的东西:

ID#     name 
--------------   
1       ball
2       tee
4       club  

这给了我一个 TypeError;我现在知道该startswith()方法只返回一个布尔值。

编辑:

由于评论太混乱,我将在此处发布此答案。这是我想出的新代码:

我实际上已经改变了我的方法,现在我想出了这个:

userfile = open("hk.csv","rU")

id_str = input("type in the id#: ")  
#read line by line  
for i in userfile:  
newfile = i[:-1]  

#if the comparison string matches with the user input, then print out those lines. 
comparison_str = ' '  
for j in newfile:  
    if j == id_str:  
        comparison_str += j  
    print(comparison_str)

#this line is still iffy.
if comparison_str == id_str:
    print(userfile)

此代码不会打印出任何内容。我想它比我得到的 TypeError 更好。

4

1 回答 1

0

readline返回单行。遍历文件,然后在找到记录时停止:

user_id = input("type in the id#: ")

with open("hk.csv", "rU") as handle:
    for line in handle:
        if line.startswith(user_id):
            print(line)
            break
    else:
        print("No matches")

或者将整个文件转换成更好的数据结构,比如字典。

于 2013-07-26T02:40:37.170 回答