【发布时间】:2017-10-25 07:09:13
【问题描述】:
我有一个包含字符串单元格的 CSV 文件,我想将它导入 python。我的文件是这样的:
header1 header2 header3
abc 1.12 abc
str1 5.00 str2
我想在 python 中看到与数组相同的格式。我该怎么做?
【问题讨论】:
我有一个包含字符串单元格的 CSV 文件,我想将它导入 python。我的文件是这样的:
header1 header2 header3
abc 1.12 abc
str1 5.00 str2
我想在 python 中看到与数组相同的格式。我该怎么做?
【问题讨论】:
将您的(假设制表符分隔的)CSV 文件转换为列表列表:
import csv
with open('input.csv', 'rb') as f_input:
csv_input = csv.reader(f_input, delimiter='\t')
header = next(csv_input)
data = list(csv_input)
print data
print data[1][2] # row 2, column 3
这会给你data控股:
[['abc', '1.12', 'abc', ''], ['str1', '5.00', 'str2']]
str2
如果您想在data 中包含标题,请注释掉标题行。
【讨论】:
您可以使用 csv 库:CSV File Reading and Writing。
【讨论】:
制表符分隔的 csv 文件示例:
import csv
with open('yourfile.csv', 'rb') as file:
reader = csv.reader(file, delimiter='\t')
for row in reader:
print ', '.join(row)
【讨论】:
我将假设您的数据由 '\t' 字符分隔,因为它看起来有点像。
仅使用内置 Python:
with open(filename, 'rt') as f:
table = [line.rstrip('\r\n').split('\t') for line in f]
使用标准的csv 模块:
import csv
with open(filename, 'rt') as f:
table = csv.reader(f, delimiter='\t')
# you could then iterate over `table` or convert it to a static list by saying table=list(table)
这两种解决方案都会为您提供一个嵌套序列,其中各个项目都是字符串,例如:
[['header1', 'header2', 'header3'], ['abc', '1.12', 'abc'], ['str1', '5.00', 'str2']]
您还可以考虑安装流行的第三方软件包pandas,它可以让您垂直或水平切割表格并用它来做各种魔术:
import pandas
table = pandas.read_csv(filename, sep='\t')
这会让你得到这个:
>>> table
header1 header2 header3
0 abc 1.12 abc
1 str1 5.00 str2
[2 rows x 3 columns]
>>> table['header1'][0]
'abc'
【讨论】: