代码优化:import docx2txt import re # 读取docx文件内容 text = docx2txt.process("example.docx") # 使用正则表达式匹配文本中以数字和符号.开头到答案加大写英文字母结束的内容保存为列表 pattern = r'\d+\.\s\w+\s\w+\s\w+\s\w+\s\w+\s\w+' result = list(set(re.findall(pattern, text))) # 获取列表中的每一条数据比较然后去除列表中重复的数据 # 将去重后的内容写入新的文本文件 with open("example_output.txt", "w", encoding="utf-8") as f: f.write('\n'.join(result))
时间: 2023-10-01 16:11:30 浏览: 220
这段代码已经很简洁了,但是可以考虑将去重的操作优化一下,避免使用set和list两个函数,可以使用Python内置的字典类型来去重。代码如下:
```
import docx2txt
import re
# 读取docx文件内容
text = docx2txt.process("example.docx")
# 使用正则表达式匹配文本中以数字和符号.开头到答案加大写英文字母结束的内容保存为列表
pattern = r'\d+\.\s\w+\s\w+\s\w+\s\w+\s\w+\s\w+'
result = {}
for item in re.findall(pattern, text):
result[item] = None
# 将去重后的内容写入新的文本文件
with open("example_output.txt", "w", encoding="utf-8") as f:
f.write('\n'.join(result.keys()))
```
这样代码更简洁,且去重的操作更高效。
相关问题
优化代码:import docx2txt import re # 读取docx文件内容 text = docx2txt.process("example.docx") # 将内容写入文本文件 with open("example.txt", "w", encoding="utf-8") as f: f.write(text) # 读取文本文件内容 with open("example.txt", "r", encoding="utf-8") as f: lines = f.readlines() # 使用正则表达式匹配文本中以数字和符号.开头到答案加大写英文字母结束的内容并去重 pattern = r'\d+\.\s\w+\s\w+\s\w+\s\w+\s\w+\s\w+' result = re.findall(pattern, text) result = list(set(result)) print(result) # 将去重后的内容重新写入文本文件 with open("example.txt", "w", encoding="utf-8") as f: f.writelines(result)
可以考虑将代码优化为一次性读取docx文件,并且将匹配结果直接写入新的文本文件,避免先写入一次文本文件再读取一次的操作。代码如下:
```
import docx2txt
import re
# 读取docx文件内容
text = docx2txt.process("example.docx")
# 使用正则表达式匹配文本中以数字和符号.开头到答案加大写英文字母结束的内容并去重
pattern = r'\d+\.\s\w+\s\w+\s\w+\s\w+\s\w+\s\w+'
result = list(set(re.findall(pattern, text)))
# 将去重后的内容写入新的文本文件
with open("example_output.txt", "w", encoding="utf-8") as f:
f.write('\n'.join(result))
```
这样可以避免不必要的IO操作,并且将结果直接写入新的文本文件。
文本文件为空:import docx2txt import re # 读取docx文件内容 text = docx2txt.process("example.docx") # 使用正则表达式匹配文本中以数字和符号.开头到答案加大写英文字母结束的内容保存为列表 pattern = r'\d+\.\s\w+\s\w+\s\w+\s\w+\s\w+\s\w+' result = {} for item in re.findall(pattern, text): result[item] = None # 将去重后的内容写入新的文本文件 with open("example_output.txt", "w", encoding="utf-8") as f: f.write('\n'.join(result.keys()))
可能是因为文本中没有符合正则表达式的内容,导致result字典为空。你可以添加一些代码来判断result字典是否为空,如果为空则输出相应的提示信息。代码如下:
```
import docx2txt
import re
# 读取docx文件内容
text = docx2txt.process("example.docx")
# 使用正则表达式匹配文本中以数字和符号.开头到答案加大写英文字母结束的内容保存为列表
pattern = r'\d+\.\s\w+\s\w+\s\w+\s\w+\s\w+\s\w+'
result = {}
for item in re.findall(pattern, text):
result[item] = None
# 判断result字典是否为空
if not result:
print("没有匹配到符合条件的内容!")
else:
# 将去重后的内容写入新的文本文件
with open("example_output.txt", "w", encoding="utf-8") as f:
f.write('\n'.join(result.keys()))
```
这样当result字典为空时,程序会输出"没有匹配到符合条件的内容!",提醒用户文件中没有符合条件的内容。
阅读全文