python - 如何将列表中的字符串转换为列表,从 [[list1],[list2]....[listm]]
问题描述
我有一些数据,例如: ['6005,280', '6005,2751', '6005,260']
我想将它们转换成一个列表,如: [['6005','280'],['6005','2751'],['6005','260']]
我用
for i in range(len(mainText)):
target_list.append(int(x) for x in mainText[i].split(','))
但是得到了一些疯狂的输出,例如:
[<generator object main.<locals>.<genexpr> at 0x000000DA61784C78>, <generator object main.<locals>.<genexpr> at 0x000000DA61784B10>, <generator object main.<locals>.<genexpr> at 0x000000DA61784CF0>]
那么正确的方法是什么?
代码:
import csv
def main():
inputfile=open('price.csv','r')
mainText=mainPart(inputfile)
## print(mainText)
target_list=[]
for i in range(len(mainText)):
target_list.append(int(x) for x in mainText[i].split(','))
print(target_list)
def mainPart(file):
## import items with first row
rowsWithEnter1=[row for row in file]
## del first row
rowsWithEnter2=rowsWithEnter1[1:]
rows=[]
for i in range(len(rowsWithEnter2)):
rows.append(rowsWithEnter2[i].strip('\n'))
return rows
main()
解决方案
当int(x) for x in ...
括号内有理解(如 )时,它被解释为生成器,这是一种特殊类型的对象,然后可以迭代以生成列表。您看到的疯狂输出是因为您实际上创建了一个生成器列表,而不是一个列表列表。要将您的理解解释为列表而不是生成器,您只需将它们放在方括号中:
for i in range(len(mainText)):
target_list.append([int(x) for x in mainText[i].split(',')])
推荐阅读
- typescript - 如何使用不同的 tsconfig 文件进行测试?
- c++ - C++ PTHREADS - 无效的转换 void*(*)() 到 void*(*)(void*)
- php - Typo3:PersistenceManager persistAll() 在将对象添加到存储库后创建空数据库记录
- http - 如果 Golang http 传输中的 keep-alive 连接数达到 MaxIdleConns 会发生什么
- .net-core - 在业务层 .net core 2.1 中使用 AutoMapper 的方法
- mediawiki - 更改默认缩略图大小
- database - 在不同的相同 Kettle Jobs/Transformioins 中使用可变 DB 连接
- sql - 在记录级别上标记差异
- python - IDE (Pycharm) 的最佳开放时间是什么时候?
- react-native - 导航栏没有隐藏在“react-native-router-flux”中的抽屉中