首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Python替换文本文件多行中的某些字符?

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

Stack Overflow用户
提问于 2019-02-11 20:29:26
回答 2查看 673关注 0票数 1

我是Python新手,所以请容忍我。我有一个名为names.txt的文本文件。该文件的内容如下:

代码语言:javascript
复制
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”。最终结果应该如下所示:

代码语言:javascript
复制
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,

下面是我的代码:

代码语言:javascript
复制
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()

此脚本的输出如下:

代码语言:javascript
复制
1/1/1/10/12
/1/1

它只读取文本文件中的第一行。感谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-11 20:38:02

您正在使用readlines()迭代第一行,只需遍历文件和strip()每一行,以跳过行尾的\n

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2019-02-11 20:41:23

这个文件将同时读取所有文件,并将其分成一行。

代码语言:javascript
复制
file.read().split()

然后,您可以通过以下方式迭代这个列表

代码语言:javascript
复制
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()

在控制台中:

代码语言:javascript
复制
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
>>> 

注:

我只是修改了你的解决方案,所以你不会很难理解发生了什么

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54638628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档