【问题标题】:CSV file with string in python [closed]python中带有字符串的CSV文件[关闭]
【发布时间】:2017-10-25 07:09:13
【问题描述】:

我有一个包含字符串单元格的 CSV 文件,我想将它导入 python。我的文件是这样的:

header1  header2 header3
abc       1.12    abc 
str1      5.00     str2

我想在 python 中看到与数组相同的格式。我该怎么做?

【问题讨论】:

    标签: python arrays string csv


    【解决方案1】:

    将您的(假设制表符分隔的)CSV 文件转换为列表列表:

    import csv
    
    with open('input.csv', 'rb') as f_input:
        csv_input = csv.reader(f_input, delimiter='\t')
        header = next(csv_input)
        data = list(csv_input)
    
    print data
    print data[1][2]        # row 2, column 3
    

    这会给你data控股:

    [['abc', '1.12', 'abc', ''], ['str1', '5.00', 'str2']]
    
    str2
    

    如果您想在data 中包含标题,请注释掉标题行。

    【讨论】:

    • 完美,谢谢。现在我可以将 str2 的格式转换为 int 了!
    【解决方案2】:

    您可以使用 csv 库:CSV File Reading and Writing

    【讨论】:

      【解决方案3】:

      制表符分隔的 csv 文件示例:

      import csv
      with open('yourfile.csv', 'rb') as file:
          reader = csv.reader(file, delimiter='\t')
          for row in reader:
              print ', '.join(row)
      

      【讨论】:

        【解决方案4】:

        我将假设您的数据由 '\t' 字符分隔,因为它看起来有点像。

        仅使用内置 Python:

        with open(filename, 'rt') as f:
            table = [line.rstrip('\r\n').split('\t') for line in f]
        

        使用标准的csv 模块:

        import csv
        with open(filename, 'rt') as f:
             table = csv.reader(f, delimiter='\t')
             # you could then iterate over `table` or convert it to a static list by saying table=list(table)
        

        这两种解决方案都会为您提供一个嵌套序列,其中各个项目都是字符串,例如:

        [['header1', 'header2', 'header3'],  ['abc', '1.12', 'abc'], ['str1', '5.00', 'str2']]
        

        您还可以考虑安装流行的第三方软件包pandas,它可以让您垂直或水平切割表格并用它来做各种魔术:

        import pandas
        table = pandas.read_csv(filename, sep='\t')
        

        这会让你得到这个:

        >>> table
          header1  header2 header3
        0     abc     1.12     abc
        1    str1     5.00    str2
        
        [2 rows x 3 columns]
        
        >>> table['header1'][0]
        'abc'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-16
          • 1970-01-01
          • 2012-12-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多