我有一个如下格式的文本文件,包含以下字符串:
trymf_001/trymrf_001_001trymf_001/trymf_001_002...trymf_001/trymf_001_160...trymt_018/trymt_018_280
使用以下代码:
#!/usr/bin/env pythonfo = open ("stt.text", "r")for line in fo.readlines(): a = line.find('/') str1 = line[0:9] str2 = line[10:23] y = str2 + ' ' + str1 print(y)fo = open ("newstt.text", "w")fo.write(y)fo.close()
当我在终端屏幕上打印时,得到的输出是:
trymrf_001_001 trymf_001trymrf_001_002 trymf_001...trymf_001_160 trymf_001...trymt_018_280 trymt_018
但是,在新文本文件中我只得到最后一行,而我需要所有行。
回答:
只写入最后一行的原因是你在for
循环内定义了y
,这意味着每次迭代y
都会被重新定义。你可以尝试这样做:
fo = open ("stt.text", "r") y_list = [] # 创建一个新列表来存储所有数据 for line in fo.readlines(): a = line.find('/') str1 = line[0:9] str2 = line[10:23] y = str2 + ' ' + str1 y_list.append(y) # 将所有数据存储到新创建的列表中 print(y) fo.close() fo = open ("newstt.text", "w") for lines in y_list: fo.write(lines+"\n") # 从列表中写入所有数据 fo.close()