python - 使用python拆分行并将分隔符添加到文本文件
问题描述
我正在为 NLP 分析清理一个凌乱的 .txt 文件(文本 ID 和原始文本)。
目前它看起来像:
@@0001 words 83 words, 90, words, 8989! @@0002 words, 98 words; words. @@0003 words 30 words ....
我想把它变成一个干净的 .txt 或 .csv 格式,每个文本都在自己的行上,ID 与文本用分隔符分隔。
ID | text
0001 | words 83 words, 90, words, 8989!
0002 | words, 98 words; words.
0003 | words 30 words ....
以下代码创建一个 .txt 文件,其中每个文本都在其自己的行中:
with open('/file_directory/file.txt', 'r') as file, open('/file_directory/file_cleaned.txt', 'w') as file2:
for line in file:
for word in line.split('@@'):
file2.write(word + '\n')
例如,
0001 words 83 words, 90, words, 8989!
0002 words, 98 words; words.
0003 words 30 words ....
但是,我无法弄清楚如何添加分隔符,因为我无法匹配特定的整数系列或整数长度(例如,4+ 位)。目前,我正在尝试首先通过正则表达式添加分隔符,然后拆分行,但我遇到了正则表达式和文件写入问题。
import re
with open('/filedirectory/file.txt', 'r') as file, open('/filedirectory/file_cleaned.txt', 'w') as file2:
text = file1.readlines()
for line in text:
text.re.split('^@\d{4,7}')
for word in line.split('@@'):
file2.write(word + '\n')
我得到错误:
AttributeError: 'list' object has no attribute 're'
任何想法将不胜感激。谢谢!
解决方案
list
没错,对象没有属性是不言而喻的re
。
您可以使用
with open('/file_directory/file.txt', 'r') as file, open('/file_directory/file_cleaned.txt', 'w') as file2:
file2.write(re.sub(r'@@\d+', r'\n\g<0> | ', file.read()).lstrip())
正则表达式匹配@@
一个或多个数字,并将匹配替换为换行符、整个匹配值和|
用单个空格括起来的字符。
请参阅Python 演示:
import re
s = "@@0001 words 83 words, 90, words, 8989! @@0002 words, 98 words; words. @@0003 words 30 words ...."
print( re.sub(r'(@@\d+)', r'\n\1 | ', s).lstrip() )
输出:
@@0001 | words 83 words, 90, words, 8989!
@@0002 | words, 98 words; words.
@@0003 | words 30 words ....
推荐阅读
- linux - 如何将单个文件 tar 到多个目录中?
- php - 如何通过 Laravel 路由中间件将多个参数传递给策略
- python - 如何复制数据框中的整行
- mysql - 在 IIS 中接收电子邮件并插入 MYSQL
- python - 在python中运行和清除不同的程序并清除控制台和变量
- react-native - 当 Modalize 打开时反应原生禁用向左滑动
- jpa - 使用安全 JDBC 通过用户/电子邮件和密码登录
- python - Python 异步下载证书链
- python - Python中的简单线性回归问题
- vaadin - Vaadin 14:尝试在对话框的后台打开页面,同时保持对话框打开