[英]How to check if line in text file equals to a specific string?
我正在尝试从文本文件中提取行,并使其成为新词典的键。 到目前为止,我已经做到了:
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")
,是布尔表达式 。 or
运算符采用两个值,并返回第一个为true的值。 在这种情况下,由于布尔值将Python中的任何非空字符串都视为true,因此布尔值表达式将返回“ Red”。 这意味着您的if语句真正在说的是:
if line == "Red":
您需要做的是针对每个值测试line
。 尽管可以通过遍历每个值并说: 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
采用:
if line in ("Red", "Yellow", "Blue"):
要检查您的行是否不包含空格或\\n
,可以使用:
line.strip('\\n ')
而不是line
:
if line.strip('\n ') in ("Red", "Yellow", "Blue"):
dictionary[line.strip('\n ')] = ''
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.