【问题标题】:Writing a .csv file from a list in Python从 Python 列表中编写 .csv 文件
【发布时间】:2011-06-20 15:27:17
【问题描述】:

我有一个 .txt 文件,我从中提取了一个列表,在 Python 控制台查看器中如下所示:

92007
92011
92014
92024
1;
92058
92067
92075
92083
2;

我现在需要将此列表放在一个 .csv 文件中,所有数字都位于“1;”上方分配给组“1”和“2”以上的所有数字;分配到组“2”。换句话说,Excel文件的一列应该有五位数字,另一列应该有相应的组号。

我已经在 Excel 中创建了 .csv 文件,但它是空的。有什么建议吗?

【问题讨论】:

    标签: python csv


    【解决方案1】:
    full = {}
    arr = []
    
    with open('numbers.txt', 'r') as nums:
        while True:
            read = nums.readline()
            if len(read) > 0:
                if len(read) == 6:
                    read = read[:5]
                    arr.append(read)
                elif len(read) < 6:
                    read = read[0]
                    full[read] = arr
                    arr = []
            else:
                break
    
    with open('numbers.csv', 'w') as csv:
        for i in full:
            for j in full[i]:
                line = str(j) + ',' + str(i) + '\n'
                csv.write(line)
    

    此文件采用文本文件(我复制了您在上面发布的内容并保存到文本文件)并按照您描述的方式将其输出到 .csv 文件中。

    抱歉缺少cmets,我很快就完成了。如果您想修改并且不明白任何内容,请询问,我会解释。

    此外,按照现在的方式,该程序仅适用于个位数的组号。以下更改将解决最多 4 位数字的问题(显然 5 位数字会破坏它,因为它无法区分设置的数字及其包含的元素:

    换行

    read = read[0]
    

    read = read[0:len(read)-2]
    

    它有效。除了它按字母顺序而不是数字顺序排列它们,所以它是 11、10、1、2、3、4、5、6、7、8、9。

    【讨论】:

      【解决方案2】:

      此页面提供了全面的概述:http://docs.python.org/library/csv.html

      在此页面上,它为您提供了一个简单的示例:http://www.answermysearches.com/list-to-csv-in-10-seconds-python-csv-module-quick-reference/120/

      【讨论】:

        【解决方案3】:
        import csv
        
        f = open("input.txt", "r")
        o = open("output.csv", "wb")
        csvo = csv.writer(o)
        
        inputText = f.read().split(";")
        f.close()
        
        for block in inputText:
            row = data.split("\n")
            idNo = row[-1]
            numbers = ""
            for line in row[:-1]:
                numbers += line +"\n"
            numbers.strip("\n")
            csvo.writerow([idNo, numbers])
        
        
        o.flush()
        o.close()
        

        此脚本的作用是使用分号作为分隔符,它将数据拆分为多个集合。然后,它按行拆分,给出一个 5 位数字的列表,最后是组号。所以它从列表中取出最后一个数字并将其放入第一列,其余的将放入第二列,由换行符分隔。

        希望对你有帮助

        【讨论】:

          猜你喜欢
          • 2021-06-13
          • 1970-01-01
          • 1970-01-01
          • 2012-12-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多