[英]Keeping the quotes when reading CSV file in python
麻烦的是一个非常烦人的家庭作业。 我有一个 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()
不得不以丑陋的方式来做,文件太不合理了。 与同一门课程的一些同事交谈,显然这个想法不是在这里使用 csv 模块,而是在 Python 中练习基本的文件处理。
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()
感谢您的帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.