我有一个包含一些行的大文件,其中包含类似的信息。下面是一个示例:
1001,"""software"" Backdoor",CVE-0000-0001但是,有些代码行包含多个相同id号的CVE,用~分隔。它们看起来像这样:
5005,NetBIOS Brute Force of Accounts,CVE-1999-0504~CVE-1999-0505~CVE-1999-0506~CVE-1999-0518我希望将这些行拆分为以下格式:
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次。
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='')发布于 2020-05-11 23:46:31
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]))https://stackoverflow.com/questions/61733226
复制相似问题