从Python中的列表中编写.csv文件

时间:2011-06-20 15:27:17

标签: python csv

我有一个.txt文件,我从中提取了一个在Python控制台查看器中看起来像这样的列表:

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

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

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

3 个答案:

答案 0 :(得分:2)

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文件的形式将其输出为您所描述的内容。

很抱歉由于缺乏评论,我很快就做到了。如果您想修改并且不理解任何事情,请询问,我会解释。

此外,就目前而言,该程序仅适用于单位数组号。以下更改将解决这个数字最多4位数(显然5位数将打破它,因为它将无法区分集合数字及其包含的元素:

更改行

read = read[0]

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

它有效。除了它按字母顺序而不是数字顺序排序,因此它分为11,10,1,2,3,4,5,6,7,8,9。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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位数的列表,以及最后的组号。因此,它从列表中取出最后一个数字并将其放入第一列,其余的,它将放入第二列,由换行符分隔。

希望这有帮助