2013-05-06 9 views
22

में पहले से पहले अक्षर शामिल करें और निम्न कोड एक अच्छा पठनीय आउटपुट में लौटाता है।पाइथन 2.7

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 

मैं यह कैसे कर सकते हैं?

उत्तर

47

एक अंडरस्कोर वर्ण के बाद एक लाइन पर सभी पाठ मिलता है, पहले _ चरित्र पर विभाजित है और परिणाम के अंतिम तत्व लेने के लिए:

line.split('_', 1)[-1] 

यह भी लाइनों ऐसा नहीं है के लिए काम करेंगे लाइन पर एक अंडरस्कोर चरित्र।

डेमो:

>>> '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') 
+0

मैं लाइनों में लाइन के लिए जोड़ने की जरूरत है: line.split ('_', 1) [- 1 ] लाइनों के बीच = .... और tofile.write ... – user2343368

+0

हां, आपको प्रत्येक पंक्ति के लिए ऐसा करने की ज़रूरत है। –

+0

'infile = botslib.opendata (ta_from.filename, 'आर') tofile = botslib.opendata (एसटीआर (ta_to.idta), 'पश्चिम बंगाल') शुरू = infile.readline() आयात textwrap लाइनों =" \ आर \ n ".join (textwrap.wrap (प्रारंभ, 640)) लाइनों में लाइन के लिए: line.split ('_', 1) [- 1] tofile.write (रेखाएं) infile.close() tofile.close() ' परिणामस्वरूप फ़ाइल का अंतिम अक्षर = S – user2343368

संबंधित मुद्दे