Skip to main content
 首页 » 编程设计

python之如何检查文本文件中的行是否等于特定字符串

2025年05月04日51mfrbuaa

我正在尝试从文本文件中提取行,并将它们作为新字典的键。到目前为止,我已经这样做了:

file = open(FileName, 'r') 
dictionary = {} 
for line in file: 
    if line == ("Red" or "Yellow" or "Blue"): 
       dictionary[line] = '' # And then I'll edit this empty string later.  
return dictionary 
file.close() 

我觉得“if line == ...”部分不正确,或者我没有正确读取文件?它不起作用。

有人可以在不给出直接答案的情况下为我指明正确的方向吗? 感谢您阅读本文!我很感激。

请您参考如下方法:

你的感觉是对的。你看,Python 的 if 语句不像英语句子那样工作。 if 语句的第二部分:("Red"or "Yellow"or "Blue"),是一个 bool 表达式。 or 运算符接受两个值,并返回第一个为 true 的值。在这种情况下,由于 Python 中的任何非空字符串在 bool 术语中都被视为 true,因此您的 bool 表达式返回“Red”。这意味着您的 if 语句真正要表达的是:

if line == "Red": 

您需要做的是针对每个值测试行。虽然这可以通过遍历每个值并说:if line == "Red"or line == "Blue"... 来完成,但 Python 是一种更好的方法。使用 in 运算符,您可以创建一个可迭代对象,其中包含您要针对 line 进行测试的所有值。然后 Python 将测试 line 是否等于可迭代对象中的任何值。在您的情况下,使用元组会很好,但如果您需要针对更多值测试 line,则应改用 set():

if line in ("Red", "Yellow", "Blue"): 
    # do stuff 

最后一点是 line 可以包含换行符。您可以使用 .strip() 删除换行符。所以你的最终解决方案是:

if line.strip('\n') in ("Red", "Yellow", "Blue"): 
        # do stuff