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