繁体   English   中英

Python在txt文件中搜索输入

[英]Python search for input in txt file

当我的脚本运行时,它要求输入。 然后检查该输入以查看它是否在文本文件中。 如果是,则打印文本。 我下面的代码是我所拥有的,但它似乎不起作用,任何帮助将不胜感激!

discordname = input("What's your discord name?: ")
file = open('rtf.txt')
for line in file:
    line.strip().split('/n')
    if line.startswith(discordname):

        file.close()
        print("works")

表达方式

line.strip().split('\n')

不会改变绑定到 name line的信息,它保持不变。 相反,它返回一个新值。 您需要将该新值绑定到一个名称才能使用它。 这个例子可能有帮助:

In [1]: a = "  v  "

In [2]: a.strip()
Out[2]: 'v'

In [3]: a
Out[3]: '  v  '

In [4]: b = a.strip()

In [5]: a
Out[5]: '  v  '

In [6]: b
Out[6]: 'v'

然后split('\\n') (请注意,您可能想要\\而不是/ )进一步返回由换行符拆分的子字符串列表。 请注意,这不是很有用,因为for line in file:已经拆分成行,因此列表最多只有一个元素,因此您应该省略它。

对我有用,优化的代码是:

result =  any(line.startswith(discordname) for line in file.splitlines())
if(result):
    file.close()
    print "works"

您正在尝试使代码更复杂。 首先使用'with'打开一个文本文件,因为它更灵活,不需要关闭。 然后,您可以使用 readlines() 而不是使用 strip。 此函数将每一行转换为一个列表,或者您也可以使用方法 read(),它按原样显示所有结果。

所以,

通过使用 readlines,您可以将一行中的用户输入作为列表进行查看,而通过使用 read,您可以查看每个单词。 这是解决方案:

discordname = input("What's your discord name? ")
with open('rtf.txt') as file:
       contents = file.readlines()
if discordname in contents:
       print("It exits")

这是解决方案:

discordname = input("What's your discord name?: ")
with open('rtf.txt', 'r') as f:
    for line in f.readlines():
        if line.startswith(discordname):
            print ("it works")

我希望它能解决你的问题。谢谢

您可能也在尝试获取字符串作为输入。 我建议这样做:

discordname = raw_input("What's your discord name? ")
with open('rtf.txt') as f:
    for line in f:
        if discordname in line:
            print "works"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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