我想知道在Python 2.7中是否有办法读取文本文档来查找某些单词,然后如果找到这些单词,它会读取几行以查找新单词。如果它没有找到新单词,它将返回寻找第一个单词。
例如,我的文字文档如下所示:
1.Section
2. Cheesecake
3. 0
4. 0
5. 0
6. Tastes good
7. 0
8. 0
9. Donut
10. 0
11. Tastes good
12. 0
13. Cheesecake
14. 0
15. 0
16. Tastes bad
这是我到目前为止的代码:
import sys
fileName = open("filename.txt", "r")
while True:
line = fileName.readline()
if line is None: break
else:
if line.startswith('CHEESECAKE'):
print (line)
x = raw_input(" Continue? ")
if x == "n":
sys.exit()
从现在开始,我不知道该怎么做!我怎样才能找到奶酪蛋糕,然后检查它们的味道是否合适?
答案 0 :(得分:1)
沿着这些方向尝试......
if line.startswith('CHEESECAKE'):
do something
elseif line.startswith('tastegood'):
do something
else:
do something
print (line)
x = raw_input(" Continue? ")
if x == "n":
sys.exit()
答案 1 :(得分:0)
您可以使用thisline=line.next()
您还可以使用类似
的内容继续阅读主循环中的行for tmp in line:
if tmp eq "bla" :
... do something.
break
答案 2 :(得分:0)
使用正则表达式:
filecontent = open("filename.txt", "r").read()
results = re.findall('Cheesecake.*?Tastes\s+?(\w*)\s+?', filecontent, re.DOTALL)
print results
在文件中查找模式的最佳方法是在一个步骤中一次性读取它,除非它是一个非常长的文件。 然后,使用带有re.DOTALL标志的正则表达式。这意味着换行被视为常规字符,允许搜索模式跨越多行。
如果需要,可以将其中的一部分与之前的代码混合,以允许用户一次进行一次匹配。然后,您应该使用re.search(pattern, text, re.DOTALL).group(1)
来获取每个匹配内容。
答案 3 :(得分:0)
您还可以将记录从一个关键字分组到下一个关键字。
import sys
def process_group(list_in): if len(list_in): for rec in list_in: if rec.startswith("Tastes"): print "Tastes found for", list_in[0] return print "Tastes NOT found for", list_in[0]
open_file = open("filename.txt", "r")
group_list=[] start_list=["CHEESECAKE", "DONUT"] for line in open_file: for st in start_list: if line.upper().startswith(st): ## process this group print (line) process_group(group_list) group_list=[] ## an empty list for the next group x = raw_input(" Continue? ") if x == "n": sys.exit() group_list.append(line)
process_group(group_list) # process the last group