在fi中搜索或指定子串

2024-05-16 18:48:58 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题可能是重复的,但我找到的任何答案似乎都不起作用。我有一个满是这种布局的.txt文件:

艺术家-宋,www.link.com你知道吗

艺人2-歌曲2,网址:www.link2.com你知道吗

这是我的一般目的:

uinput = input("input here: ")

save = open("save.txt", "w+")
ncount = save.count("\n")

for i in range(0, ncount):
    t = save.readline()
    if uinput in t:
        print("Your string " uinput, " was found in" end = "")        
        print(t)

我的意图是:如果在一行中找到userinput单词,则打印整行或链接。你知道吗


Tags: 文件答案intxtcominputsavewww
3条回答
  1. 您想读取文件,但正在以写模式打开文件。您应该使用r,而不是w+

  2. 对文件进行迭代的最简单方法是在file对象上直接进行for循环迭代

  3. 不是错误而是吹毛求疵。您不关闭文件。您可以用with.. as上下文管理器来解决这个问题


uinput = input("input here: ")

with open("save.txt", "r") as f:
    for line in f:
        if uinput in line:
            print('Match found')

您可以使用列表理解来读取文件并仅获取包含单词的行,例如:

with open('save.txt', 'r') as f:
    uinput = input("input here: ")
    found = [line.rstrip() for line in f if uinput.lower() in line.lower()]
    if found:
        print('Found in these lines: ')
        print('\n'.join(found))
    else:
        print('Not found.')

如果只想打印链接,可以使用:

found = [line.rstrip().split(',')[1] for line in f if uinput.lower() in line.lower()]

您可以使用列表理解来获取包含用户输入单词的行。 使用以下代码:

try:
    f = open("file/toyourpath/filename.txt", "r") 
    data_input = raw_input("Enter your listed song from file :");
    print data_input
    fetch_line = [line for line in f if data_input in line]
    print fetch_line
    f.close()
except ValueError, e:
    print e

相关问题 更多 >