我对python非常陌生,我需要使用正则表达式。我在一个目录中有多个.txt文件需要解析。这些.txt文件中的每一个都有多次出现的单词“指令”。我需要抓取“指令”一词后面的数字,并将其添加到将在excel中显示的列表中。这是以这样的方式完成的,我有一列“指令”,其中包含所有指令编号,并且我有一行所有.txt文件名。我最终需要在指令编号前面加上一个“是”或“否”,如果它存在于特定的.txt文件中。我想知道如何获取“指令”一词后面的数字并将其添加到列表中(也许)。稍后使用此列表来制定Excel文件。编写此正则表达式指令的方法是什么?这是我到目前为止的代码import csv import re import glob import os inst_num = []os.chdir (r"C:\Users\10002\Desktop\work\scripts")for file in glob.glob("*.txt"): with open (file, 'r') as f: for line in f: inst = re.compile ('instruction:(\d+)',line) if inst.search(line) is not None: inst_num = inst.search(line).group(1)
1 回答

慕容森
TA贡献1853条经验 获得超18个赞
首先,不要将要搜索的文本字符串作为第二个参数(可选的第二个参数是要使用的标志,例如)。其次,应该将 to 的调用从循环中取出,否则您将破坏预编译正则表达式的目的。第三,你问了多个问题,这通常是不受欢迎的。我将向您展示如何创建数字列表。如果您对如何从中创建CSV文件有单独的问题,请发布单独的问题。compilere.IGNORECASEcompile
import csv
import re
import glob
import os
inst_num = []
inst = re.compile('instruction:(\d+)') # compiled regex
os.chdir (r"C:\Users\10002\Desktop\work\scripts")
for file in glob.glob("*.txt"):
with open (file, 'r') as f:
for line in f:
match = inst.search(line) # do the search once
if match:
inst_num.append(match.group(1)) # add to list
添加回答
举报
0/150
提交
取消