Le code suivant retourne dans une sortie lisible de Nice.
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()
Ceci est la sortie, maintenant je voudrais supprimer tous les caractères jusqu'à et y compris le _
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
Comment puis-je faire ceci?
Pour obtenir tout le texte sur une ligne après un caractère de soulignement, divisez le premier _
et prenez le dernier élément du résultat:
line.split('_', 1)[-1]
Cela fonctionnera également pour les lignes qui pas ont un caractère de soulignement sur la ligne.
Démo:
>>> 'Grp25_QTY47 5'.split('_', 1)[-1]
'QTY47 5'
>>> 'No underscore'.split('_', 1)[-1]
'No underscore'
Traduire cela dans votre code:
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')