Python读取CSV到字符串转换

时间:2017-12-06 09:33:38

标签: python csv

我有一个包含以下值的CSV

ID, Value
1, a
2, b
3, c

如何使用Python将此csv转换为以下字符串

[('ID', 'Value'), (1, 'a'), (2, 'b'), (3, 'c')]

我正在尝试使用以下代码

with open('sample.csv', 'rb') as csvfile: 
    reader = csv.reader(csvfile, delimiter=' ', quotechar='|')
    for row in reader:
        data = ', '.join(row)
        rows.append(data)
print rows

仅获得以下输出

["'ID','Value'", "1,'a'", "2,'b'", "3,'c'"]

2 个答案:

答案 0 :(得分:1)

要从CSV数据生成列表[('ID', 'Value'), (1, 'a'), (2, 'b'), (3, 'c')],您需要将数字字符串转换为整数。这是Python 2中的一种方法。

import csv

data = []
with open('sample.csv', 'rb') as csvfile: 
    reader = csv.reader(csvfile, skipinitialspace=True)
    data.append(tuple(next(reader)))
    for num, val in reader:
        data.append((int(num), val))

print data

<强>输出

[('ID', 'Value'), (1, 'a'), (2, 'b'), (3, 'c')]

csv.reader将CSV数据的每一行都作为一个列表。我们需要从该列表中提取项目并将第一个项目转换为int。然后我们可以将这两个项打包成一个元组并将其附加到data列表中。但是,标题行包含两个字符串,因此我们不希望在标题行上执行该转换。

此代码:

data.append(tuple(next(reader)))

获取标题行并将其转换为元组并将结果附加到我们的data列表。

答案 1 :(得分:0)

请勿使用rb阅读,只需阅读r

with open('sample.csv', 'r') as csvfile:
    csvtext = csvfile.readlines()

mylist = []
for line in csvtext:
    mylist.append(tuple(line.strip().split(', ')))
print(mylist)