繁体   English   中英

在python中读取CSV文件时保留引号

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM