gpt4 book ai didi

python - 在 python re 中分隔字符串中的第一个单词

转载 作者:太空宇宙 更新时间:2023-11-04 02:38:16 27 4
gpt4 key购买 nike

我需要将字符串分成两组;第一个词和第二个词或词组。单词由下划线分隔,当我使用当前代码时,如果有多个下划线,它只会分隔最后一个。这是我目前拥有的代码:

for record in reader:
s = record['trial']
patternsubgen = re.compile(r'(\w+)\(\w+\)\_(\w+)')
source = "Footit"
if patternsubgen.search(s):
resultsubgen = patternsubgen.search(s)
genussubgen = resultsubgen.group(1)
speciessubgen = resultsubgen.group(2)
subgen = '%s %s' % (genussubgen, speciessubgen)
#print(subgen)
else:
pattern = re.compile(r'(\w+)\_(\w+)')
if pattern.search(s):
result = pattern.search(s)
genus = result.group(1)
species = result.group(2)
new = '%s %s' % (genus, species)
print(new)

以下是字符串的一些示例:

Aphis(Aphis)_asclepiadis, Cinara_011, Clydesmithia_canadensis_1a,

我需要的是:

Aphis asclepiadis,
Cinara 011,
Clydesmithia canadensis_1a,

我得到的是:

Aphis asclepiadis,
Cinara 011,
Clydesmithia_canadensis 1a

最佳答案

对于给定的字符串,你可以使用

\b([^_\W]+)(?:\([^()]+\))?_(\w+)\b

参见 a demo on regex101.com .


Python 中:

import re

strings = 'Aphis(Aphis)_asclepiadis, Cinara_011, Clydesmithia_canadensis_1a,'

rx = re.compile(r'\b([^_\W]+)(?:\([^()]+\))?_(\w+)\b')

strings = rx.sub("\g<1> \g<2>", strings)
print(strings)
# Aphis asclepiadis, Cinara 011, Clydesmithia canadensis_1a,

关于python - 在 python re 中分隔字符串中的第一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47318128/

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