如何使用Python替换文本文件多行中的某些字符?

时间:2019-02-11 20:29:27

标签: python

我是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

它仅读取文本文件中的第一行。感谢任何帮助!

2 个答案:

答案 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
>>> 

注意:

我只修改了您的解决方案,所以您不必费劲就能了解发生了什么