从第一个Capi解析字符串

2024-06-16 11:56:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一根线: b57gff83_fail_HAP_SCREAM_K_SEARCH_X_SKAR_2

我想得到一个新字符串,它包含从第一个大写字母到结尾的所有内容,如下所示: HAP_SCREAM_K_SEARCH_X_SKAR_2

我试过用重新拆分使用不同的正则表达式选项,但我无法捕获整个文本。你知道吗

到目前为止,我得到的最好的结果是: ((\_[A-Z] *)\d *(\_ *[A-Z]*)) * 这不是我想要的。。你知道吗

这是我迄今为止的代码:

text = line.split()
parsedText = re.split('[A-Z]*', text[1])
print(parsedText)

其中line是我拆分的一行,因为我只需要它的第二部分。你知道吗

我得到的是所有parsedText的所有内容的打印,我也不知道如何获得我想要的特定文本。你知道吗

有什么建议吗?你知道吗


Tags: 字符串text文本内容search结尾line大写字母
3条回答

你把正则表达式复杂化了。你知道吗

import re

string = 'b57gff83_fail_HAP_SCREAM_K_SEARCH_X_SKAR_2'

print(re.findall(r'([A-Z].*)', string))

输出

['HAP_SCREAM_K_SEARCH_X_SKAR_2']

保留第一个大写字母之前的所有内容与删除第一个大写字母之前的所有内容相同。你知道吗

>>> re.sub('^[^A-Z]+', '', 'b57gff83_fail_HAP_SCREAM_K_SEARCH_X_SKAR_2')
'HAP_SCREAM_K_SEARCH_X_SKAR_2'

您可以使用[A-Z].*,如前所示,但请记住,如果所有大写字母都是ASCII,它将正常工作。如果这对所有输入都适用,则可以这样做,但是如果可能遇到非ASCII大写,则最好按以下方式使用str方法.isupper

txt = 'b57gff83_fail_HAP_SCREAM_K_SEARCH_X_SKAR_2'
uppers = [i.isupper() for i in txt]
if True in uppers:
    parsed = txt[uppers.index(True):]
    print(parsed)  # HAP_SCREAM_K_SEARCH_X_SKAR_2
else:
    print('txt has not any uppercase character')

相关问题 更多 >