首页 > 解决方案 > 获取字符串列表并根据逗号将其拆分为二维列表

问题描述

到目前为止,我有以下代码:

def display2dlist(data):
    for i in data:               #loops through list
        lines = i.strip()       #removing leading and trailing characters
        split_lines = lines.split(", ")       #splitting lines by ','
        print(split_lines)       #prints list


with open("python.csv", "r") as infile:
    data = infile.readlines()[0:]       #reads lines from file 
#print(data)
display2dlist(data)       #calling the function display2dlist with data list as parameter

它从 csv 文件中读取行并将每一行保存为列表。它输出这个:

['2016,London,10']
['2017,Tokyo,11']
['2018,Toronto,12']
['2018,Dubai,23']

我将如何做到这一点,而不是将每一行保存为一个大字符串。它在每个逗号处拆分行并保存多个值。所以它应该是这样的:

['2016','London','10']
['2017','Tokyo','11']
['2018','Toronto','12']
['2018','Dubai','23']

例如在我当前的代码中:

data[0][0]= '2'
data[0][1]= '0'        #it is treating it as a big string and just going letter by letter
data[0][2]= '1'
data[1][0]= '2'
data[1][1]= '0'         
data[1][2]= '1'

我想要它,所以当我执行前面的代码时,输​​出是:

data[0][0]='2016'
date[0][1]='London'
data[0][2]='10'
data[1][0]='2017'
data[1][1]='Tokyo'         
data[1][2]='11'

标签: pythonlistsplitreadfile

解决方案


删除 split 方法中的多余空间并使用 thos 函数获取嵌套列表:

def get_2d(data):
    listdata = []
    for i in data:
        split_lines = i.strip().split(",") #  not ", "
        listdata.append(split_lines)
    return listdata

...

with open("python.csv", "r") as infile:
    data = infile.readlines()[0:] 
print(get_2d (data))

推荐阅读