Python - 用句点替换括号并删除第一个和最后一个句点

标签 python regex

我正在尝试获取一个包含 DNS 查找列表的输入文件,其中包含子域/域分隔符,字符串长度在括号中而不是句点中。它看起来像这样:

(8)subdomain(5)domain(3)com(0)
(8)subdomain(5)domain(3)com(0)
(8)subdomain(5)domain(3)com(0)

我想用句点替换括号和数字,然后删除第一个和最后一个句点。我的代码目前执行此操作,但保留了最后一段。任何帮助表示赞赏。这是代码:

import re

file = open('test.txt', 'rb')
writer = open('outfile.txt', 'wb')


for line in file:
    newline1 = re.sub(r"\(\d+\)",".",line)  
    if newline1.startswith('.'):
        newline1 = newline1[1:-1]   

    writer.write(newline1)

最佳答案

您可以使用 \(\d+\) 正则表达式拆分行,然后使用 . 连接两端的逗号:

for line in file:
    res =".".join(re.split(r'\(\d+\)', line))
    writer.write(res.strip('.'))

参见 IDEONE demo

关于Python - 用句点替换括号并删除第一个和最后一个句点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32865763/

相关文章:

python - 我可以添加带有可选字符列表的非捕获组吗?

java - 验证文本区域

regex - 为什么这个简单的正则表达式与我认为的不匹配?

regex - 正则表达式 while 循环内的代码块正在工作,但在手动终止之前不会显示结果

php - 荷兰电话号码的正则表达式

python - 如何在 tensorflow 中使用 eval() 提取值以及我们需要启动 session 多少次

python - 带有 cssselct 的 scrapy

python - 如何在 Python OpenCV 中绘制图像对数色度图

python - 在 pygame 中,重置每个 Sprite 位置的最有效方法是什么?

python - 如何在 Pandas Python 中按 id 对行进行排名