2015-12-29 32 views
1

這個問題是another question的後續。你需要閱讀以瞭解這裏的問題。如何在列表中將's'字符串轉換爲0?

要做到這一點,

輸入1(文本文件1)

ABCD, QI30 
FGDE, Q140 
KLOM, Q232 
..  .. 
..  .. 
..  .. 

輸入2(文本文件2)

DATA: ARRAY: KLOM: n: 00000000011111111001111111ssss111111111111 
DATA: ARRAY: ABCD: n: 000111111111111111101111111111111sss111111 
DATA: ARRAY: FGDE: n: 01010101011111111sssssss111111111111111111 
..  .. 
..  .. 
..  .. 

輸出

Item=Q232; Var:KLOM  
read_Var:read_q232: Get_Data: n: 00000000011111111001111111ssss111111111111 

Item=Q130; Var:ABCD 
read_Var:read_q150: Get_Data: n: 000111111111111111101111111111111sss111111 

Item=Q140; Var:FGDE 
read_Var:read_q170: Get_Data: n: 01010101011111111sssssss111111111111111111 
..  .. 
..  .. 
..  .. 

Item=Q232; Data:KLOM  
read_Data:burn_q232: Get_Data: n: 000000000111111110011111110000111111111111 

Item=Q130; Data:ABCD 
read_Data:burn_q150: Get_Data: n: 000111111111111111101111111111111000111111 

Item=Q140; Data:FGDE 
read_Data:burn_q170: Get_Data: n: 010101010111111110000000111111111111111111 
..  .. 
..  .. 
..  .. 

在「SSSS '列3中的字符串input2文本文件被替換爲'0000'並在輸出文件的第二段中作爲輸出寫入。

這是我修改的代碼部分:

with open('output.txt', 'w') as fobj: 
for key, values in arrays: 
    item = ids[key] 
    new_values = string.replace(values[3:],'s','0') 
    fobj.write('Item={}; Var:{}\n'.format(item, key)) 
    fobj.write('read_Var:read_{}: Get_Data: {}\n\n'.format(item.lower(), 
                 ':'.join(new_values))) 

但我得到這個錯誤:

AttributeError: 'list' object has no attribute 'replace' 

回答

2

你需要得到列表values的最後一個條目,做它的替代:

values[-1] = values[-1].replace('s', '0') 

整個循環:

with open('output.txt', 'w') as fobj: 
    for key, values in arrays: 
     values[-1] = values[-1].replace('s', '0') 
     item = ids[key] 
     fobj.write('Item={}; Var:{}\n'.format(item, key)) 
     fobj.write('read_Var:read_{}: Get_Data: {}\n\n'.format(item.lower(), 
                  ':'.join(values))) 

輸出:

Item=Q232; Var:KLOM 
read_Var:read_q232: Get_Data: n:000000000111111110011111110000111111111111 

Item=QI30; Var:ABCD 
read_Var:read_qi30: Get_Data: n:000111111111111111101111111111111000111111 

Item=Q140; Var:FGDE 
read_Var:read_q140: Get_Data: n:010101010111111110000000111111111111111111 
+0

非常感謝@MikeMüller 。 – Noorul

2

什麼是string?反正這應該做你想做的

with open('output.txt', 'w') as fobj: 
    for key, values in arrays: 
     item = ids[key] 
     new_values = values[-1].replace('s','0') 
     fobj.write('Item={}; Var:{}\n'.format(item, key)) 
     fobj.write('read_Var:read_{}: Get_Data: {}\n\n'.format(item.lower(),':'.join(new_values))) 

字符串是字符串處理Python模塊,但你的錯誤說:list。所以我假設字符串包含某種列表。

如果有任何您可能需要查看str。等效語法將

new_values = str.replace(values[-1],'s','0')