python - 蟒蛇 | 一致地重新格式化文本文件中的每一行
问题描述
我已经制作了自己的拼写错误单词的语料库。
misspellings_corpus.txt
:
English, enlist->Enlish
Hallowe'en, Halloween->Hallowean
我的格式有问题。值得庆幸的是,它至少是一致的。
当前格式:
correct, wrong1, wrong2->wrong3
所需格式:
wrong1,wrong2,wrong3->correct
- 的顺序
wrong<N>
无关紧要, - 每行可能有任意数量的
wrong<N>
单词(用逗号分隔:),
, - 每行只有 1 个
correct
单词(应该在 的右侧->
)。
失败的尝试:
with open('misspellings_corpus.txt') as oldfile, open('new.txt', 'w') as newfile:
for line in oldfile:
correct = line.split(', ')[0].strip()
print(correct)
W = line.split(', ')[1].strip()
print(W)
wrong_1 = W.split('->')[0] # however, there might be loads of wrong words
wrong_2 = W.split('->')[1]
newfile.write(wrong_1 + ', ' + wrong_2 + '->' + correct)
输出new.txt
(不工作):
enlist, Enlish->EnglishHalloween, Hallowean->Hallowe'en
解决方案:(受@alexis 启发)
with open('misspellings_corpus.txt') as oldfile, open('new.txt', 'w') as newfile:
for line in oldfile:
#line = 'correct, wrong1, wrong2->wrong3'
line = line.strip()
terms = re.split(r", *|->", line)
newfile.write(",".join(terms[1:]) + "->" + terms[0] + '\n')
输出new.txt
:
enlist,Enlish->English
Halloween,Hallowean->Hallowe'en
解决方案
假设所有逗号都是单词分隔符。为方便起见,我将用逗号和箭头分隔每一行:
import re
line = 'correct, wrong1, wrong2->wrong3'
terms = re.split(r", *|->", line)
new_line = ", ".join(terms[1:]) + "->" + terms[0]
print(new_line)
您可以将其放回文件读取循环中,对吗?
推荐阅读
- java - 我可以使用已弃用的类吗?
- elixir - 将片段和 group_by 与 postgres 和 ecto 一起使用?
- javascript - 如何在纯javascript中单击时获取li元素内的文本
- mongodb - 尽管有 --password 选项,Mongo 仍在等待密码
- python - 在梯度提升分类器中使用 sample_weight
- mysql - Sql 相对数据库用户名
- asp.net-mvc - 在文本中使用 ASCII 的 Asp.Net MVC 下拉列表
- python - Autoencoder,steps_per_epoch,应该包含什么值?
- php - 如何正确使用 PHP 会话变量来执行用户登录?
- google-sheets - 简化谷歌表格中的数据