【问题标题】:Python read xlsx as CsvPython 将 xlsx 读取为 Csv
【发布时间】:2020-03-31 08:12:42
【问题描述】:

我正在使用 xlrd 将 xlsx 文件读取为 csv。为此,我使用以下代码:

workbook = xlrd.open_workbook("170519_taxonomy_in_qiime.xlsx")
sheet = workbook.sheet_by_index(0)
source_data = [sheet.row_values(rowx) for rowx in range(sheet.nrows)]

这给了我这个示例结果

[[225145.0, 'k__Bacteria', ' p__ZB3', ' c__Rs-J96', ' o__', ' f__', ' g__', ' s__'], [2916972.0, 'k__Bacteria', ' p__ZB3', ' c__Rs-J96', 'o__', ' f__', ' g__', ' s__']]

但我需要我的结果看起来像这样:

[['225145.0, k__Bacteria,  p__ZB3,  c__Rs-J96,  o__,  f__,  g__,  s__'], ['2916972.0, k__Bacteria,  p__ZB3,  c__Rs-J96,  o__,  f__,  g__,  s__']]

任何想法如何做到这一点?

【问题讨论】:

标签: python python-3.x


【解决方案1】:

source_data 中的每个项目都是一个值列表。您正在尝试生成包含列表中每个值的单个字符串。

您可以为此使用str.join 函数。但是请注意,列表中的第一个元素是浮点值而不是字符串,因此您首先需要将其转换为字符串,然后才能使用 join 函数。

例如:

source_data = [' '.join(map(str,sheet.row_values(rowx))) for rowx in range(sheet.nrows)]

【讨论】:

    【解决方案2】:
    x = [[225145.0, 'k__Bacteria', ' p__ZB3', ' c__Rs-J96', ' o__', ' f__', ' g__', ' s__'], [2916972.0, 'k__Bacteria', ' p__ZB3', ' c__Rs-J96', 'o__', ' f__', ' g__', ' s__']]
    
    y = []
    for c in x:
        b = ""
        for a in c:
            b =b + "".join(str(a))
        y.append(b)
    y
    

    输出

    ['225145.0k__Bacteria p__ZB3 c__Rs-J96 o__ f__ g__ s__',
     '2916972.0k__Bacteria p__ZB3 c__Rs-J96o__ f__ g__ s__']
    

    【讨论】:

      猜你喜欢
      • 2013-07-15
      • 2018-08-27
      • 1970-01-01
      • 2016-06-15
      • 2021-02-18
      • 2017-12-15
      • 2015-05-13
      • 2016-04-03
      • 1970-01-01
      相关资源
      最近更新 更多