【发布时间】:2017-09-20 07:57:26
【问题描述】:
所以我必须获取一个 .csv 文件(可以点击此处下载:http://ge.tt/7lx5Boj2/),我想将其转换为 2D 列表。
我的代码目前可以这样做,但有一个问题。
嵌套列表的每个元素都被读取为一个大字符串而不是元素列表,因为在每个嵌套列表的开头和结尾都添加了一个撇号。
例如,而不是:
["ID","Name","Type 1","Type 2","Generation","Legendary"]
我得到:
['"ID","Name","Type 1","Type 2","Generation","Legendary"']
为了解决这个问题,我尝试创建一个嵌套的 for 循环,用一个空字符替换列表中的每个撇号,但我的代码没有做任何事情。它只是打印完全相同的字符串,就好像替换操作从未发生过一样。
def read_info_file(filename):
opened_infocsv = open(filename, 'r') #opens an argued .csv file with INFO ormat.
linebylinelist = [fline.splitlines() for line in opened_infocsv] #converts entire .csv into a 2D list
opened_infocsv.close()
print(linebylinelist)
print('\n')
for i in linebylinelist:
for l in i:
l.replace("'","")
print(linebylinelist)
read_info_file('info_file5.csv')
有解决这个问题的想法吗?注意:我不允许导入 CSV
编辑:我尝试将 .replace 更改为 .strip ,但它仍然不起作用。老实说,我不知道如何解决这个问题。
我认为问题的根源与我使用列表理解将 CSV 转换为二维列表的方式有关。也许可以在不先将行转换为字符串的情况下将 CSV 转换为 2d 列表。
【问题讨论】:
-
我建议您至少看看使用 Python 的 csv 库。这将自动将每一行转换为值列表,而无需拆分或替换。
-
很遗憾,我不允许导入 csv
标签: python list for-loop replace nested-lists