1

我希望您能帮助我使用#Python。

我有这个数据集:

E   1   1999-02-28  b,g,f    jjj:12,bbb:3,ddd:9,ggg:8,hhh:2
A   2   1999-10-28  a,f,c,d  ccc:2,ddd:0,aaa:3,hhh:9

我需要在列表中获取 b,g,f 和 a,f,c,d 的序列。我尝试使用模式[az],[az]的多种组合,但是每次跳过最后一项时,我都不知道如何概括得到序列。

输出应如下所示:

[b,g,f]
[a,f,c,d]

数据集来自一个 csv 文件,我正在阅读这样的内容:

with open("data.csv", "r") as file:
    lines = file.readlines()

然后使用 for 循环读取行:

list_sequence = []
for i in lines:
    a = re.findall(pattern= '???' , string=str(i))
    list_sequence.append(b)

在问号中,是我需要找到模式的地方。

4

2 回答 2

0

您可以尝试以下 - (将每一行拆分为字段并再次拆分第四个字段)

with open('in.txt') as f:
  data = []
  for line in f:
    parts = line.split()
    data.append(parts[3].split(','))
print(data)

输出

[['b', 'g', 'f'], ['a', 'f', 'c', 'd']]
于 2021-11-12T16:23:38.913 回答
0

您可以使用

(?<!\S)[a-z](?:,[a-z])*(?!\S)

请参阅正则表达式演示详情

  • (?<!\S)- 左空白边界
  • [a-z](?:,[a-z])*- 一个小写 ASCII 字母,然后是零个或多个逗号序列和一个小写 ASCII 字母
  • (?!\S) - 右空白边界。
于 2021-11-12T16:35:59.163 回答