如何在python中将列表中的“s”字符串转换为0?

2024-09-26 23:26:58 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题是another question的后续问题。你需要阅读来理解这里的问题。你知道吗

想这么做

输入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  
..      ..  
..      ..   
..      ..  

第3列input2文本文件中的“ssss”字符串将替换为“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'  

Tags: readdatagetvaritemarrayvalues文本文件
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))) 

string是用于字符串操作的python模块,但是您的错误是list。所以我假设字符串包含某种列表。你知道吗

如果有的话,您可能需要查看str。等效的语法是

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

您需要获取列表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

相关问题 更多 >

    热门问题