gpt4 book ai didi

python - 从一个字符串中提取多个子字符串

转载 作者:行者123 更新时间:2023-12-05 08:45:59 27 4
gpt4 key购买 nike

我从另一个文件中解析出以下字符串:“CHEM1(5GL) CH3M2(55LB) CHEM3954114(50KG)”我想要做的是将它们拆分成单独的值,这是我使用 .split() 函数实现的。所以我将它们作为一个数组获取:

x = ['CHEM1(5GL)', 'CH3M2(55LB)','CHEM3954114(50KG)']

现在我想将它们进一步拆分为 3 个部分,并将它们存储在另外 3 个变量中,这样我就可以将它们写入 excel 中:

a = CHEM1
b = 5
c = GL

对于第一个数组,然后我将循环返回第二个数组:

a = CH3M2
b = 55
c = LB

最后:

a = CHEM3954114
b = 50
c = KG

我不确定该怎么做,因为我对 Python 还是个新手。据我所知,我使用 split 函数迭代了多次,但我相信必须有比这更好的方法。

谢谢。

最佳答案

您应该使用 re包裹:

import re

x = ['CHEM1(5GL)', 'CH3M2(55LB)','CHEM3954114(50KG)']

pattern = re.compile("([^\(]+)\((\d+)(.+)\)")

for x1 in x:
m = pattern.search(x1)
if m:
a, b, c = m.group(1), int(m.group(2)), m.group(3)

跟进:

正则表达式的主题非常庞大,并且在本网站上涵盖得非常好 - 正如 Tim 在上面强调的那样。我可以分享我对这个具体案例的想法。本质上,您要提取 3 组字符:

  1. ( 之前的所有字符(字母和数字) - 不包括在内
  2. ( 之后的数字
  3. 在上一步中提取的数字之后的字母 - 直到 ) - 不包括在内。

是括号内的任何内容 () :在这种特定情况下,它可能会变得困惑,因为如上所述,您将方括号作为句子的一部分 - 需要使用 \ 进行转义。与正则表达式中使用的区别。

  • 第一组是([^\(]+) ,这实质上意味着:匹配一个或多个不是 ( 的字符(^ 是否定,括号 ( 需要在这里转义,原因如上所述)。请注意,字符 不仅可以包含字母和数字,还可以包含 $、£、- 等特殊字符。我想在这里保持我的选择开放,但如果需要,您可以得到更多的激光引导(包括,例如,仅使用 [\w]+ 的数字和字母)
  • 第二组是(\d+) ,这实际上是匹配 1 个或多个(用 + 表示)数字(用 \d 表示)。
  • 最后一组是(.+) - 匹配任何剩余的字符,最后一个 \)确保匹配到右括号之前的所有剩余字符。

关于python - 从一个字符串中提取多个子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70737244/

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