在键入特定字符串时,使文件打印某些行?

时间:2013-07-26 02:36:40

标签: string file python-3.x

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

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好。

1 个答案:

答案 0 :(得分: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")

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