私は本当に近くにいます。「各単語間のスペース数」を読んだところ、次の行が表示されます。
counts = [(len(list(cpart))) for c,cpart in groupby(s) if c == ' ']
しかし、私は本当にそれを理解していません...私は理解しているか、Cが区切り文字であり、Sがあなたがグループ化しているものであり、結果のリストを入れていますか?カウント (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