如何在Python中遍历字符串列表

2024-09-27 18:18:14 发布

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

我对Python有点陌生,我正在尝试简化我现有的代码。 现在,我用不同的字符串把代码重复了5次。我希望有一次的代码,让它运行一个字符串列表。在

目前我所拥有的:

def wiScanFormat():

    File = open("/home/pi/gpsMaster/WiScan.txt", "r")
    data = File.read()
    File.close()
    MAC = data.replace("Address:", "\nAddress, ")
    File = open("/home/pi/gpsMaster/WiScan.txt", "w")
    File.write(MAC)
    File.close()

    File = open("/home/pi/gpsMaster/WiScan.txt", "r")
    data = File.read()
    File.close()
    SSID = data.replace("ESSID:", "\nESSID, ")
    File = open("/home/pi/gpsMaster/WiScan.txt", "w")
    File.write(SSID)
    File.close()

    File = open("/home/pi/gpsMaster/WiScan.txt", "r")
    data = File.read()
    File.close()
    FREQ = data.replace("Frequency:", "\nFrequency, ")
    File = open("/home/pi/gpsMaster/WiScan.txt", "w")
    File.write(FREQ)
    File.close()

    File = open("/home/pi/gpsMaster/WiScan.txt", "r")
    data = File.read()
    File.close()
    QUAL = data.replace("Quality", "\nQuality, ")
    File = open("/home/pi/gpsMaster/WiScan.txt", "w")
    File.write(QUAL)
    File.close()

    File = open("/home/pi/gpsMaster/WiScan.txt", "r")
    data = File.read()
    File.close()
    SIG = data.replace("Signal level", "\nSignal Level, ")
    File = open("/home/pi/gpsMaster/WiScan.txt", "w")
    File.write(SIG)
    File.close()

我想要什么:

^{pr2}$

然后把它通过:

^{3}$

我已经试着运行我提交的东西,但它似乎没有按照我需要的方式格式化。在

上面的输出如下:

Cell 46 - Address: xx:xx:xx:xx:xx:xx    ESSID:"MySSID"  Frequency:2.412 GHz (Channel 1) Quality=47/100  Signal level=48/100 Quality=47/100  Signal level=48/100

但它应该是这样的(当我分别在字符串上运行同一个块时,它确实是这样的):

xx:xx:xx:xx:xx:xx   MySSID  5.18 GHz (Channel 36)   0.81    0.99

我该如何在字符串列表中循环这段代码? 我需要两个字符串来进行查找和替换,旧的和新的,所以它们必须一起工作。显然,这些列表的大小相同,我需要它们的顺序正确。Address with Address,ESSID with ESSID等

提前谢谢!在


Tags: 字符串代码txthomeclosereaddatapi
3条回答

试试这样的方法:

ORG = ['Address:', 'ESSID:'...etc]
NEW = ['\nAddress, ' , '\nESSID, ' , ...  etc]

File = open("/home/pi/gpsMaster/WiScan.txt", "r")
data = File.read()
File.close()
for org, new in zip(ORG, NEW):
    data = data.replace(org, new)
File = open("/home/pi/gpsMaster/WiScan.txt", "w")
File.write(data)
File.close()

(注意zip的工作方式:https://docs.python.org/2/library/functions.html#zip

考虑到您的ORGNEW,最简单的方法如下:

# Open once for both read and write; use with statement for guaranteed close at end of block
with open("/home/pi/gpsMaster/WiScan.txt", "r+") as f:
    data = f.read()  # Slurp file
    f.seek(0)        # Seek back to beginning of file
    # Perform all replacements
    for orig, repl in zip(ORG, NEW):
        data = data.replace(orig, repl)
    f.write(data)    # Write new data over old
    f.truncate()     # If replacement shrunk file, truncate extra

如果我没看错你的问题,你正在打开同一个文件,做一个小的改动,保存它,然后再次关闭它,五次。你只需打开一次,做所有的修改,然后保存它。例如,像这样:

filename = "/home/pi/gpsMaster/WiScan.txt"
with open(filename, 'r') as fin:
    data = fin.read()
data = data.replace("Address:", "\nAddress, ")
data = data.replace("ESSID:", "\nESSID, ")
data = data.replace("Frequency:", "\nFrequency, ")
data = data.replace("Quality", "\nQuality, ")
data = data.replace("Signal level", "\nSignal Level, ")
with open(filename, 'w') as fout:
    fout.write(data)

如果要使用列表(ORGNEW)作为替换,可以执行以下操作:

^{pr2}$

相关问题 更多 >

    热门问题