【发布时间】:2014-10-21 04:20:47
【问题描述】:
遇到一个树桩,我有两个旧文本文件,我想从中提取数据以创建一个 csv 文件。
为了简短起见,我的代码与屏幕上的代码完全相同:
import csv, itertools
list1 = []
with open('D:/py_files/legacy_temp/REPORT_1.TXT', 'rb') as tf:
for line in tf:
if len(line) > 2:
if line[17].isdigit():
acctnum = str(line[16:31])
custname = str(line[39:58])
currbal = str(line[84:96])
diffbal = str(line[102:114])
list1.append(acctnum + '|' + custname + '|' + currbal + '|' + diffbal)
list2 = []
with open('D:/py_files/legacy_temp/REPORT_2.TXT', 'rb') as tf2:
for line in tf2:
if line[0].isdigit():
acctnum = str(line[1:12])
ourbal = str(line[80:90])
alldnum = str(line[123:131])
clntnum = str(line[132:152])
list2.append(acctnum + '|' + ourbal + '|' + alldnum + '|' + clntnum)
下面的代码只是我的剪贴簿,我正在尝试的东西。我可以创建 csv 文件,但它要么写为一个连续的长行,要么在附加“|”时写入在每个字符之后,即:a|b|c|d|等等……
#mlist = []
#if len(list1) == len(list2):
# for i, j in map(None,list1,list2):
# print i + '|' + j
def f1():
clist = []
outfile = csv.writer(open('D:/py_files/legacy_temp_/report_diff.csv', 'wb'))
if len(list1) == len(list2):
for i, j in map(None,list1,list2):
clist.append(str(i + '|' + j + '\n'))
outfile.writerow(clist)
print '\n'.join(clist)
def f2():
for x,y in zip(list1,list2):
print list1+list2
def f3():
output = list(itertools.chain(list1,list2))
print '\n'.join(output)
两件事,a) 我是否以正确的方式进行此操作(分别打开两个文本文件),以及 b) 如果我是,我如何编写一个 csv 文件,该文件将为我提供以下行:
acctnum|custname|currbal|diffbal|acctnum|ourbal|alldnum|clntnum
将上面| 中的每个元素放在一个单独的单元格中..
PS。我只使用管道作为分隔符,因为余额中有逗号。我不需要使用管道,因为我可以替换天平中的逗号。
非常感谢所有帮助,谢谢
【问题讨论】:
标签: python list csv text merge