python - 扁平化Python中的嵌套字符串列表

标签 python list csv nested flatten

我有两个列表,一个没有嵌套,另一个是。

carNames = []
priceAndMileage = []

合并后的数据如下:

[(u'2011 Toyota Camry SE V6', [u'$14,995', u'31,750']), (u'2012 Toyota Camry L', [u'$15,993', u'27,381'])]

我的代码是:

combinedData = zip(carNames, priceAndMileage)

writer = csv.writer(open("dict.csv", 'r+'))

for dataList in combinedData:
    dataList = [dataList[0]] + [y for x in dataList[1] for y in x]
    writer.writerow(dataList)

我展平了 dataList,但是它会迭代每个字符,而不仅仅是项目。我怎样才能产生结果,例如展平任务不会展平每个字符,而只是展平项目子列表?

我的结果在 csv 文件中:

2011 Toyota Camry SE V6,$,1,4,",",9,9,5,3,1,",",7,5,0
2012 Toyota Camry L,$,1,5,",",9,9,3,2,7,",",3,8,1

但我需要:

2011 Toyota Camry SE V6, $14,995, 31,750
2012 Toyota Camry L, $15,993, 27,381

最佳答案

要展平 dataList,您可以连接 [dataList[0]]dataList[1]:

   for dataList in combinedData:
        dataList = [dataList[0]] + dataList[1]
        writer.writerow(dataList)

说明

dataList 例如 (u'2011 Toyota Camry SE V6', [u'$14,995', u'31,750']) (顺便说一句,dataList 不是一个列表,它是一个 tuple - 基本上是列表的不可变版本)

我们想要得到的是一个扁平化的dataList,即[u'2011 Toyota Camry SE V6', u'$14,995', u'31,750']

[dataList[0]] 是一个仅包含一个元素的列表:[u'2011 Toyota Camry SE V6']

dataList[1] 是一个包含两个元素的列表:[u'$14,995', u'31,750']

[dataList[0]] + dataList[1] 将连接这两个列表,我们将得到展平的 dataList

关于python - 扁平化Python中的嵌套字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21342571/

相关文章:

Python正则表达式匹配完整或部分单词

python - 按时间间隔写入scapy sniff捕获的数据包

python - 连接连续相等元组中的字符串

python - 在Cloudera VM中阅读教程CSV文件时的异常(exception)

csv - 在 Haskell 中解析 CSV/TSV 文件 - Unicode 字符

javascript - 使用 basil.js 将数据从 CSV 导入到 InDesign

python - python 中 init_ntoa 的字符串到十六进制

python - 如何将嵌套的数字列表转换为字符串列表?

python - Pandas 系列中列表的有效串联

java - 为什么像 Java 这样的语言区分字符串和字符,而其他语言则不区分?