这个问题可能是重复的,但我发现任何答案似乎都没有效果。我有一个.txt文件,里面装满了这个布局:
艺术家 - 歌曲,www.link.com
artist2 - song2,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字,则打印整行或链接。
答案 0 :(得分:4)
您想要读取文件,但是您正在以写入模式打开文件。您应该使用r
,而不是w+
迭代文件的最简单方法是在文件对象上直接迭代for
循环
不是错误,而是挑剔。你没有关闭你的文件。您可以使用with.. as
上下文管理器
uinput = input("input here: ")
with open("save.txt", "r") as f:
for line in f:
if uinput in line:
print('Match found')
答案 1 :(得分:1)
您可以使用list-comprehension读取文件并仅获取包含该单词的行,例如:
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()]
答案 2 :(得分:0)
您可以使用列表推导来获取包含用户输入词的行。 使用下面的代码:
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