Python 需要为每个字符串创建一个数组数组
所以我有这样的数据:Python 需要为每个字符串创建一个数组数组,python,arrays,string,python-2.7,split,Python,Arrays,String,Python 2.7,Split,所以我有这样的数据: >> print data "12345","string1","string2","string3","string4","string5" "67890","string6","string7","string8","string9","string10" >> print array_data [["12345","string1","string2","string3","string4","string5"], ["67890","str
>> print data
"12345","string1","string2","string3","string4","string5"
"67890","string6","string7","string8","string9","string10"
>> print array_data
[["12345","string1","string2","string3","string4","string5"],
["67890","string6","string7","string8","string9","string10"]]
我希望能够将每一行作为一个数组,放入一个数组中。所以最后,我希望它看起来像这样:
>> print data
"12345","string1","string2","string3","string4","string5"
"67890","string6","string7","string8","string9","string10"
>> print array_data
[["12345","string1","string2","string3","string4","string5"],
["67890","string6","string7","string8","string9","string10"]]
我尝试了一些方法,这是我得到的最接近的方法:
>> temp_list = []
>> for line in data.splitlines(): temp_list.append([line])
>> print temp_list
[['"12345","string1","string2","string3","string4","string5"'],
['"67890","string6","string7","string8","string9","string10"']]
我在每个数组中都得到一个引号。我应该如何着手获得我正在寻找的结果
提前谢谢 您可以使用
ast
和split
设置
那就
for line in d.strip().splitlines():
templist.append([ast.literal_eval(st) for st in line.split(',')])
请注意,您还可以使用列表理解制作一个单行程序
templist = [[ast.literal_eval(st) for st in line.split(',')] for line in d.strip().splitlines()]
鉴于:
您可以这样做(如果”
没有指明可能包含,
的csv字段!):
或者您可以使用来正确处理字段中的逗号:
>>> import csv
>>> [list(e) for e in csv.reader(data.splitlines())]
[['12345', 'string1', 'string2', 'string3', 'string4', 'string5'], ['67890', 'string6', 'string7', 'string8', 'string9', 'string10']]
使用熊猫:
import pandas as pd
d = '''\
"12345","string1","string2","string3","string4","string5"
"67890","string6","string7","string8","string9","string10"'''
l = pd.read_csv(pd.compat.StringIO(d), header=None, dtype='object').values
你有我:
[['12345', 'string1', 'string2', 'string3', 'string4', 'string5'],
['67890', 'string6', 'string7', 'string8', 'string9', 'string10']]
使用标准库中的和模块:
import csv
from io import StringIO
d = '''"12345","string1","string2","string3","string4","string5"
"67890","string6","string7","string8","string9","string10"'''
res = list(csv.reader(StringIO(d)))
print(res)
[['12345', 'string1', 'string2', 'string3', 'string4', 'string5'],
['67890', 'string6', 'string7', 'string8', 'string9', 'string10']]
你就快到了
>> temp_list = []
>> temp_list = [list(eval(line)) for line in data.splitlines()]
>> print temp_list
[['12345', 'string1', 'string2', 'string3', 'string4', 'string5'], ['67890', 'string6', 'string7', 'string8', 'string9', 'string10']]
如果您仍然感到困惑,请查看Python中引号是如何表示字符串的:如果您对答案投了反对票,请提供理由。
>> temp_list = []
>> temp_list = [list(eval(line)) for line in data.splitlines()]
>> print temp_list
[['12345', 'string1', 'string2', 'string3', 'string4', 'string5'], ['67890', 'string6', 'string7', 'string8', 'string9', 'string10']]