gpt4 book ai didi

python - 根据字符串中的特定逗号有选择地将字符串拆分为元组列表

转载 作者:太空宇宙 更新时间:2023-11-03 12:37:11 24 4
gpt4 key购买 nike

我有一个很长的 Python 字符串,形式如下:

string='Black<5,4>, Black<9,4>'

我如何将这个字符串和任何其他具有相同形式(即 <ArbitraryString1<ArbitraryListOfIntegers1>,<ArbitraryString2<ArbitraryListOfIntegers2>,... )的任意长度拆分成元组列表。

例如,以下是 string 的期望输出:

list_of_tuples=[('Black',[5,4]),'Black,[9,4])

通常我会使用 string.split在逗号上生成一个列表,然后用正则表达式将单词与 <> 分开但是因为我需要使用逗号来分隔我的索引( <> 的内容),所以这是行不通的。

最佳答案

您可以使用正则表达式在 < 之前捕获 1 个以上的单词字符并捕获里面的所有东西 <...>到另一个组,然后用 , 拆分第 2 组内容将值转换为 int:

import re
s='Black<5,4>, Black<9,4>'
print([(x, map(int, y.split(','))) for x,y in re.findall(r'(\w+)<([^<>]+)>', s)])
# => [('Black', [5, 4]), ('Black', [9, 4])]

参见 Python demo

图案细节:

  • (\w+) - 第 1 组(分配给 x):1 个或多个字符
  • < - 文字 <
  • ([^<>]+) - 第 2 组(分配给 y ):除 < 以外的 1+ 个字符和 >
  • > - 文字 > .

关于python - 根据字符串中的特定逗号有选择地将字符串拆分为元组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44113237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com