【发布时间】:2013-03-13 02:35:13
【问题描述】:
我真的很接近。我通读了“number of space between each word”,它确实提供了这一行:
counts = [(len(list(cpart))) for c,cpart in groupby(s) if c == ' ']
但我真的不明白......我明白,或者我假设,C 是分隔符,S 是你分组的依据,你正在放置结果列表?(python 的新手,数组?) 计入计数(S 指的是先前实例化的变量)
我如何确定这样的事情?
AMOUNT DATE
NAME ACCOUNT# DISCOUNT DUE DUE
我正在创建一个程序,它允许我查看随机创建的 COBOL 输出文件头并使用它来创建 PIC(X) 的关联。
示例解决方案输出为:
- PIC X(30) 值空间。
- PIC X(6) 值“金额”。
- PIC X(8) 值空间。
- PIC X(4) 值“日期”。
重要的部分是数字。我可以很明显地确定字符串的长度,但是我不确定如何......
这是我到目前为止所展示的,我正在工作,哈哈:
from itertools import groupby
from test.test_iterlen import len
from macpath import split
from lib2to3.fixer_util import String
file = open("C:\\Users\\Joshua\\Desktop\\Practice\\cobol.cbl", 'r+')
line1 = file.readline()
split = line1.split()
print (split)
print ()
counts = [(len(list(cpart))) for c,cpart in groupby(split) if c == ' ']
print (counts)
index = 0
while index != split.__len__():
if split[index].strip() != None:
print ("PICX(" + ") VALUE " + "\"" + split[index] + "\".")
elif counts[index] == None:
print ("PICX(" + ") VALUE " + "\"" + split[index] + "\".")
index+=1
【问题讨论】:
-
这是我到目前为止所得到的,以表明我正在工作,哈哈
-
几个编码cmets:不要用
s.__len__(),改用len(s);不要使用a == None或a != None,使用if a is None或a is not None。
标签: python parsing file-io delimiter cobol