我是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
它仅读取文本文件中的第一行。感谢任何帮助!
答案 0 :(得分:1)
您要在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
答案 1 :(得分:1)
这将一次读取所有文件,并将其分成几行。
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
>>>
注意:
我只修改了您的解决方案,所以您不必费劲就能了解发生了什么