麻烦的家庭作业很麻烦。我有一个csv文件,每行有很多逗号分隔的字段。我需要从每一行中获取最后两个字段,并将它们写入新的txt文件中。问题在于后面的某些字段有句子,带逗号的字段用双引号引起来,没有它们的字段则没有。例如:
180,简单
240分钟,“很简单,但是数字3,wtf?”
300,比上一次作业容易得多
我这样做,但效果很好,但是双引号消失了。分配是将字段复制到txt文件,使用分号作为分隔符并删除可能的换行符。文本必须保持完全相同。我们有一个自动检查系统,因此争论是否有意义没有用。
import csv
file = open('myfile.csv', 'r')
output= open('mytxt.txt', 'w')
csvr = csv.reader(file)
headline = next(csvr)
for line in csvr:
lgt = len(line)
time = line[lgt - 2].replace('\n', '')
feedb = line[lgt - 1].replace('\n', '')
if time != '' and feedb != '':
output.write(time + ';' + feedb + '\n')
output.close()
file.close()
是否有一些简单的解决方案?我可以完全使用csv模块吗?似乎没有人遇到完全相同的问题。
谢谢大家。
import csv
file = open('myfile.csv', 'r')
output= open('mytxt.txt', 'w')
csvr = csv.reader(file)
headline = next(csvr)
for line in csvr:
lgt = len(line)
time = line[lgt - 2].replace('\n', '')
feedb = line[lgt - 1].replace('\n', '')
if time != '' and feedb != '':
if ',' in feedb:
output.write(time + ';"' + feedb + '"\n')
else:
output.write(time + ';' + feedb + '\n')
output.close()
file.close()
file = open('myfile.csv','r')
output = open('mytxt.txt', 'w')
headline = file.readline()
feedb_lst = []
count = 0
for line in file:
if line.startswith('1'): #found out all lines should start with an ID number,
data_lst = line.split(',', 16) #that always starts with '1'
lgt = len(data_lst)
time = data_lst[lgt - 2]
feedb = data_lst[lgt - 1].rstrip()
feedback = [time, feedb]
feedb_lst.append(feedback)
count += 1
else:
feedb_lst[count - 1][1] = feedb_lst[count - 1][1] + line.rstrip()
i = 1
for item in feedb_lst:
if item[0] != '' and item[1] != '':
if i == len(feedb_lst):
output.write(item[0] + ';' + item[1])
else:
output.write(item[0] + ';' + item[1] + '\n')
i += 1
output.close()
file.close()
谢谢您的帮助!