首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中用多行替换一行的最好方法是什么?

在python中用多行替换一行的最好方法是什么?
EN

Stack Overflow用户
提问于 2020-05-11 23:21:52
回答 1查看 27关注 0票数 0

我有一个包含一些行的大文件,其中包含类似的信息。下面是一个示例:

代码语言:javascript
复制
1001,"""software"" Backdoor",CVE-0000-0001

但是,有些代码行包含多个相同id号的CVE,用~分隔。它们看起来像这样:

代码语言:javascript
复制
5005,NetBIOS Brute Force of Accounts,CVE-1999-0504~CVE-1999-0505~CVE-1999-0506~CVE-1999-0518

我希望将这些行拆分为以下格式:

代码语言:javascript
复制
5005,NetBIOS Brute Force of Accounts,CVE-1999-0504
5005,NetBIOS Brute Force of Accounts,CVE-1999-0505
5005,NetBIOS Brute Force of Accounts,CVE-1999-0506
5005,NetBIOS Brute Force of Accounts,CVE-1999-0518

我知道我需要使用replace()函数,但是我不知道如何将它拆分为两行以上。有什么想法吗?

编辑:这是我现在使用的代码。由于某种原因,它打印出正确的结果,但它做了3次。

代码语言:javascript
复制
with open("filepath") as f:
    for line in f:
        s = line    
        if "~" in line:
            #s = '5005,NetBIOS Brute Force of Accounts,CVE-1999-0504~CVE-1999-0505~CVE-1999-0506~CVE-1999-0518'
            a = s.split(',')
            for i in a:
                if a[-1].startswith('CVE') is True:
                    for j in a[-1].split('~'):
                        print(','.join(a[:-1] + [j]))
        else:
            print(line, end='')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-11 23:46:31

代码语言:javascript
复制
s = '5005,NetBIOS Brute Force of Accounts,CVE-1999-0504~CVE-1999-0505~CVE-1999-0506~CVE-1999-0518'
s2 = '5005,NetBIOS Brute Force of Accounts,CVE-1999-0504'
lines = [s, s2]

for i in lines:
    a = i.split(',')
    if a[-1].startswith('CVE') is True:
        b = a[-1].split('~')
        if len(b) == 1:
            print(','.join(a[:-1] + b))
        else:
            for j in b:
                print(','.join(a[:-1] + [j]))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61733226

复制
相关文章

相似问题

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