我有一个很大的文本文件,里面有很多笔记,我想使用Python将其拆分并分成几行。我已经使其工作了一些,但是它在.csv文件中的每个单元格中添加了一个字母,而不是整个部分。我插入了@@@
字符来表示每个部分需要在哪里拆分。例如,这是我的.txt文件的样子:
@@@ jlkdlkjdlkjdalkjdalk @@@ 78278947298729874298742 @@@ llkdlaklkdalkdsa
@@@ nmczxmnczxmncz
我最终希望将其导出到.csv中,因此它看起来像这样:
ID | Reporttext
1 | jlkdlkjdlkjdalkjdalk
2 | 78278947298729874298742
3 | llkdlaklkdalkdsa
4 | nmczxmnczxmncz
现在,它的输出方式如下:j l k d l k(依此类推)。
这是我的代码:
import re,csv 将open(“ thetext.txt”)设置为f: 对于f中的行: 对于line.split(“ @@@”)中的单词: 用open(r'theoutput.csv','a')作为g: writer = csv.writer(g) writer.writerow(word) 打印(单词)
因此,重申一下,我的问题是避免出口时的间距(例如t h i s)。
谢谢!
答案 0 :(得分:3)
您可以像这样在@
上进行剥离和分割,
$ cat txt2csv.py
import csv
with open('some.txt') as file_, open('some_new.csv', 'w') as csvfile:
lines = [x for x in file_.read().strip().split('@') if x]
writer = csv.writer(csvfile, delimiter='|')
writer.writerow(('ID', 'Reporttext'))
for idx, line in enumerate(lines, 1):
writer.writerow((idx, line.strip('@')))
输入文件,
$ cat some.txt
@@@ jlkdlkjdlkjdalkjdalk @@@ 78278947298729874298742 @ llkdlaklkdalkdsa @@@ nmczxmnczxmncz
输出文件
$ cat some_new.csv
ID|Reporttext
1| jlkdlkjdlkjdalkjdalk
2| 78278947298729874298742
3| llkdlaklkdalkdsa
4| nmczxmnczxmncz
答案 1 :(得分:1)
首先,您应该使用一个文件打开两个文件
with open("thetext.txt") as f, open(r'theoutput.csv', 'a') as g:
import csv
with open("thetext.txt") as f, open('theoutput.csv', 'a') as g:
lines = [x for x in f.read().strip().split('@') if x]
writer = csv.writer(g, delimiter='|')
writer.writerow(('ID', 'Reporttext'))
for lineNumber, line in enumerate(lines, 1):
writer.writerow((lineNumber, line.strip('@')))
还必须使用
lines = f.readlines()
因为现在正在发生的事情是python将txt文件当作一个大字符串对待
答案 2 :(得分:1)
类似于han solo的答案,您可以像这样进行行读取和拆分:
@@@
通过这种方式,您将逐行读取txt文件,然后在@@@
处将其拆分,然后将它们逐字写入CSV文件。您甚至可以删除输入文件中的前导this.canvas = this.element.nativeElement;
var ratio = Math.max(window.devicePixelRatio || 1, 1);
this.canvas.width = this.canvas.width * ratio;
this.canvas.height = this.canvas.height * ratio;
this.canvas.getContext("2d").scale(ratio, ratio);
。