我是Python新手,所以请容忍我。我有一个名为names.txt的文本文件。该文件的内容如下:
6,pon01.bf:R1.S1.LT1.PON10.ONT12
10,pon01.bf:R1.S1.LT1.PON10.ONT16
11,pon01.bf:R1.S1.LT1.PON10.ONT17
12,pon01.bf:R1.S1.LT1.PON10.ONT18我需要能够将"R“、"S”、"LT“、"PON”和"ONT“替换为"/",删除所有其他内容,并在每一行中添加"/1/1”。最终结果应该如下所示:
1/1/1/10/12/1/1,
1/1/1/10/16/1/1,
1/1/1/10/17/1/1,
1/1/1/10/18/1/1,下面是我的代码:
import os
import re
import sys
file = open("/home/Scripts/names.txt", "r")
delnode = file.readline()
port = "/1/1"
for line in delnode:
delnode = delnode.split('R')[-1]
delnode = delnode.replace(".S", "/").replace(".LT", "/").replace(".PON", "/").replace(".ONT", "/")
print delnode + port
file.close()此脚本的输出如下:
1/1/1/10/12
/1/1它只读取文本文件中的第一行。感谢你的帮助!
发布于 2019-02-11 20:38:02
您正在使用readlines()迭代第一行,只需遍历文件和strip()每一行,以跳过行尾的\n。
file = open("/home/Scripts/names.txt", "r")
port = "/1/1"
for line in file:
line = line.strip().split('R')[-1]
line = line.replace(".S", "/").replace(".LT", "/").replace(".PON", "/").replace(".ONT", "/")
print line + port发布于 2019-02-11 20:41:23
这个文件将同时读取所有文件,并将其分成一行。
file.read().split()然后,您可以通过以下方式迭代这个列表
import os
import re
import sys
file = open("/home/Scripts/names.txt", "r")
for delnode in file.read().split():
port = "/1/1"
# Splitting delnode, you want to get second half of text, therefore index 1 (0 -> 1st index, 1-> 2nd index)
delnode = delnode.split('R')[1] # [-1] also works, but you are taking the last item
delnode = delnode.replace(".S", "/").replace(".LT", "/").replace(".PON", "/").replace(".ONT", "/")
print delnode + port
file.close()在控制台中:
1/1/1/10/12/1/1
1/1/1/10/16/1/1
1/1/1/10/17/1/1
1/1/1/10/18/1/1
>>> 注:
我只是修改了你的解决方案,所以你不会很难理解发生了什么
https://stackoverflow.com/questions/54638628
复制相似问题