おはようございます、私は私を殺している質問があります。 私はスクリプトを使って顧客が私たちに送る文書を傍受しようとしています。 だから私はそれでいくつかのスケジュールでxlsxファイルを生成する必要があります。EDIドキュメントのPython正規表現
これは、文書は次のようになります。
E2EDP10001 300 5 0 02 4M0 035 503
K C5M ANTENNE 24 L06S2 CKL 17105098 16.0 20170516 32.0 2 03 000006
E2EDP16001 300 6 5 033D20170609 20170609 24
E2EDP16001 300 7 5 033D20170630 20170630 0
E2EDP16001 300 8 5 033D20170728 20170728 8
E2EDP16001 300 9 5 033I20170731 20170806 8
E2EDP16001 300 10 5 033I20170828 20170903 8
E2EDP16001 300 11 5 033I20170918 20170924 8
E2EDP16001 300 12 5 033I20171016 20171022 8
E2EDP16001 300 13 5 033I20171023 20171029 0
E2EDP16001 300 14 5 033I20171030 20171105 1
、これは私がダウンして書いたものです:
import os
import sys
import re
abs_path = os.path.dirname(sys.argv[0])
#delfor_folder
delfor_path = abs_path+r"/DELFOR"
delfor_archive_path = delfor_path+"/Archive"
#deljit_folder
deljit_path = abs_path+r"/DELJIT"
deljit_archive_path = deljit_path+"/Archive"
#delins_folder
delins_path = abs_path+r"/DELINS"
delins_archive_path = delins_path+"/Archive"
counter = 0
#ciclo i delfor
for file in os.listdir(delfor_archive_path):
if os.path.isdir(file):
continue
elif file.__contains__(".txt"):
data = []
#partner = 'unknown'
with open(delfor_archive_path+"/"+file) as f_input:
for row in f_input:
try:
data_row = re.match(r'(\d+) +(\d+) +(\d+) +(\d{8}) +(\d{8})', row)
continue
except:
data_row = re.match(r'(\d{3})+I(\d+) +(\d{8}) +(\d+)',row)
cliente_row = re.match(r'EDKA1003 +(\d+) +(\d+) +(\w+) +(\w+)', row)
materiale_row = re.match(r'EDP10001 +(\d) +(\d+) +(\w+)', row) #TODO togliere i primi due caratteri dell'ultimo gruppo
print(cliente_row)
'''
if data_row:
if data_row.groups()[0]:
data.append([partner] + list(data_row.groups()[:-1]))
else:
partner = data_row.groups()[-1]
'''
ので、私がしようとしていくつかの疑問をしましたexeptとも私は必要がある場合、可能ですが、コードをうまく機能させるためのアドバイスがあります。 私がする必要がある仕事は〜です。含まれているテーブルを作成 :
E2EDP10001 300 5 0 **02 4M0 035 503**
< < ** >> 02
E2EDP16001 300 6 5 033D20170609 20170609 24
2つの日付フォーマットaaaammddと4つの文字の最初のグループのためのexept間のコード(INこの場合、最終的にこの場合033D)
、また数量()
私はこれを介してproprerの検索にアドバイスが必要です。 ステートメントや条件がないと、私のコードが動作しています。つまり、1行に1つのre.matchを印刷すると...
アドバイスが役に立ちます。 ありがとう
は答えをいただき、ありがとうございます。私は '['4M0 035 503'、 '033D20170609'、 '20170609'、 '24']、['4M0 035 503'、 '033D20170630'、 '20170630'、 '0']、['4M0 035] '033D20170728 '、' 20170728 '、' 8 ']'など... – andrepogg
私はあなたの答えを実装し、テキストバリエーションに達するためにsomoの行を追加するスクリプトを修正しました。そして、喜んで、それは動作します。だから、ありがとう!!!! – andrepogg