我有一个.txt文件,我从中提取了一个在Python控制台查看器中看起来像这样的列表:
92007
92011
92014
92024
1;
92058
92067
92075
92083
2;
我现在需要将此列表放在.csv文件中,所有数字都高于“1”;分配给组“1”和所有数字“2”以上分配给组“2”。换句话说,Excel文件的一列应该有五位数字,另一列应该有相应的组号。
我已经在Excel中创建了.csv文件,但它是空的。有什么建议吗?
答案 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位数的列表,以及最后的组号。因此,它从列表中取出最后一个数字并将其放入第一列,其余的,它将放入第二列,由换行符分隔。
希望这有帮助