我正在编写一个代码,该代码在文本文件中查找,并查看输入是否存在。Python - 从文本文件中查找行号
例如
我输入“比萨”
我的文本文件包含:
bread
pizza
pasta
tomato
我想找到一种方法来打印行数字比萨饼上。任何帮助?
我正在编写一个代码,该代码在文本文件中查找,并查看输入是否存在。Python - 从文本文件中查找行号
例如
我输入“比萨”
我的文本文件包含:
bread
pizza
pasta
tomato
我想找到一种方法来打印行数字比萨饼上。任何帮助?
with open('test.txt') as f:
content = f.readlines()
index = [x for x in range(len(content)) if 'pizza' in content[x].lower()]
的部分(1)读出每一行中的变量“内容”的单独列表。
只有在该行中存在“pizza”的情况下,第(2)部分才会填充第#行内容。 [x for x in range(len(content))]只是填充所有索引值,而content [x] .lower()中的'if'pizza'保留与该字符串匹配的行。
print next (i for i,v in enumerate (open (fname),1) if v == needle)
之后您不想关闭文件? –
实现这一点有两种方法:
对于方法1,先在每一行读取,然后拿到指标,这个词是:
with open('path.txt') as f: data = f.readlines()
line_no = data.index("pizza")
可替代地,经过该文件以找到索引:代码
with open('path.txt') as f:
for line_no, line in enumerate(f):
if line == "pizza":
break
else: # for loop ended => line not found
line_no = -1
像这样?
import re
import os # You can go without is if you have other means to get your filepath
i = 1
matches = []
target = raw_input("Please type string to match\n")
with open(os.getenv("SOME_PATH") + "/myfile.txt") as fic: # open("myfile.txt") if in your current directory
for line in fic:
if re.search(target, line):
print "Found at line {}".format(i)
matches.append(i)
i = i +1
if not len(matches):
raise Exception, "target not found"
通过这样做,你可以输入一个正则表达式,它应该工作(即,如果你输入“p.zza”或“^ P。*”,它会奏效。)。列表matches
将包含与输入模式匹配的所有行的索引。
通过[Tutorial](https://docs.python.org/3/tutorial/index.html)开始阅读并练习示例,很快你就会开始获得创意 - 在shell中尝试其中的一些找出哪些可行,哪些不可行,查看[*内置函数]的文档(https://docs.python.org/3/library/functions.html),以查看是否有任何帮助你解决了这个问题。 – wwii