次のコードは、読みやすいニース出力に戻ります。
def add_line_remove_special(ta_from,endstatus,*args,**kwargs):
try:
ta_to = ta_from.copyta(status=endstatus)
infile = botslib.opendata(ta_from.filename,'r')
tofile = botslib.opendata(str(ta_to.idta),'wb')
start = infile.readline()
import textwrap
lines= "\r\n".join(textwrap.wrap(start, 640))
tofile.write(lines)
infile.close()
tofile.close()
これは出力です。今は、_
を含むすべての文字を削除したいと思います。
Ichg_UNBUNOA3 14 2090100000015 14 1304221445000001
MSG_BGM380 610809 9 NA
MSG_DTM13720130422 102
Grp1_RFFON test EDI
Grp2_NADBY 2090100000015 9
Grp2_NADIV 2090100000015 9
Grp2_NADDP 2090100000015 9
Grp7_CUX2 EUR4
Grp8_PAT22 5 3 D 30
Grp25_LIN1 02090100000022 EN
Grp25_QTY47 5
Grp25_QTY12 5
Grp26_MOA203 15.00
Grp28_PRIINV 3000.00 1000PCE
Grp33_TAX7 VAT 21.00 S
Grp25_LIN2 02090100000039 EN
Grp25_QTY47 10
Grp25_QTY12 10
Grp26_MOA203 350.00
Grp28_PRIINV 35000.00 1000PCE
Grp33_TAX7 VAT 21.00 S
これどうやってするの?
アンダースコア文字の後の行のすべてのテキストを取得するには、最初の_
文字で、結果の最後の要素を取得します。
line.split('_', 1)[-1]
これは、notにアンダースコア文字が含まれる行でも機能します。
デモ:
>>> 'Grp25_QTY47 5'.split('_', 1)[-1]
'QTY47 5'
>>> 'No underscore'.split('_', 1)[-1]
'No underscore'
これをあなたのコードに翻訳する:
import textwrap
ta_to = ta_from.copyta(status=endstatus)
with botslib.opendata(ta_from.filename,'r') as infile:
with botslib.opendata(str(ta_to.idta),'wb') as tofile:
for line in textwrap.wrap(next(infile), 640):
line = line.split('_', 1)[-1]
tofile.write(line + '\r\n')