缘起:要处理一个很长很长的文本,有一定的规则,但又无法通过搜索替换直接修改。那么就用 python 吧。
当使用正则表达式进行文本处理时,有时我们需要删除一对特定符号之间的内容。例如,我们想删除成对出现的《和》之间的内容。
下面是一个使用 Python 编写的示例代码,可以实现这个功能,并让用户自定义要删除的符号。
以下是完整的代码:
import re
# 用户输入要删除的符号
start_symbol = input("请输入要删除的起始符号:")
end_symbol = input("请输入要删除的结束符号:")
# 转义符号中的特殊字符
start_symbol = re.escape(start_symbol)
end_symbol = re.escape(end_symbol)
# 获取输入文件路径和输出文件路径
input_file_path = input("请输入要处理的输入文件路径:")
output_file_path = input("请输入处理后的输出文件路径:")
try:
# 打开输入文件并读取文本内容
with open(input_file_path, 'r', encoding='utf-8') as file:
text = file.read()
# 构造正则表达式模式,并匹配删除符号之间的内容
pattern = start_symbol + '.*?' + end_symbol
text = re.sub(pattern, '', text, flags=re.DOTALL)
# 打开输出文件并将处理后的文本写入
with open(output_file_path, 'w', encoding='utf-8') as file:
file.write(text)
print("处理完成!")
except FileNotFoundError:
print("文件路径错误,请重新输入正确的文件路径!")
在这段代码中:
** 首先,** 用户需要输入要删除的起始符号和结束符号。代码会自动将这些符号进行转义,以避免正则表达式语法冲突。
然后,用户需要输入要处理的输入文件路径和处理后的输出文件路径。程序会打开输入文件,并读取文件中的文本内容。
接下来,通过构造正则表达式模式来匹配要删除的符号之间的内容。使用 re.sub()
函数将匹配到的内容替换为空字符串,实现删除操作。通过添加 flags=re.DOTALL
参数,确保 .
元字符可以匹配包括换行符在内的任意字符。
最后,程序会打开输出文件,并将处理后的文本写入。处理完成后,会打印出 "处理完成!" 的提示信息。
当然,在运行代码之前,请确保输入文件存在,并且有足够的访问权限。
快用起来啵😚
flechazo
https://www.zhihu.com/people/jiu_sheng