如何在Python中为文本里的数字后添加换行符?
解决方法:用正则表达式匹配条目数字并添加换行
首先,你的需求是把文本中每个品牌条目(比如1.Air Jordan、2.Nike)单独拆分成一行,核心是找到这些条目开头的数字.模式,然后调整换行位置。结合你的代码片段,我整理了完整的实现方案:
完整代码示例
import re import os # 替换成你的目标目录路径 target_directory = "/path/to/your/directory" for folder, subfolders, filenames in os.walk(target_directory): for filename in filenames: if filename == "October 2014.txt": file_path = os.path.join(folder, filename) # 读取文件内容,指定编码避免乱码 with open(file_path, "r", encoding="utf-8") as my_file: content = my_file.read() # 关键:用正则替换,把条目数字前的空格换成换行 # 匹配规则:空格 + 数字+点,替换成换行+数字+点 modified_content = re.sub(r'\s(\d+\.)', r'\n\1', content) # 可选:如果需要把格式化后的内容转成列表 my_list = modified_content.split('\n') # 保存修改后的内容(建议存为新文件,避免覆盖原文件) output_filename = file_path.replace(".txt", "_formatted.txt") with open(output_filename, "w", encoding="utf-8") as output_file: output_file.write(modified_content) print(f"处理完成!格式化后的文件已保存为: {output_filename}")
代码说明
- 正则表达式逻辑:
r'\s(\d+\.)'匹配所有「空格+数字+点」的模式,比如原文本中1.Air Jordan 2.Nike里的2.;替换成r'\n\1'就是把空格换成换行,保留数字+点,这样每个条目就会单独起一行。 - 特殊情况处理:对于原文本中类似
5.2.2.Diesel这种带多个点的内容,因为中间的2.前面是点而不是空格,所以不会被匹配替换,完美保留原结构。 - 文件操作:用
with语句确保文件安全读写,同时指定encoding="utf-8"避免特殊字符(比如&)出现乱码。 - 列表转换:如果需要把格式化后的内容转成列表,只需要用
split('\n')分割即可。
效果展示
原文本片段:
Giovinni Enrico I GIO MORET FMJ 1.Air Jordan 2.Nike 3.Prada 4.Dolce & Gabbana 5.2.2.Diesel
格式化后:
Giovinni Enrico I GIO MORET FMJ
1.Air Jordan
2.Nike
3.Prada
4.Dolce & Gabbana
5.2.2.Diesel
内容的提问来源于stack exchange,提问作者edyvedy13
相关产品推荐
相关产品推荐

