繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM