在字符之间查找多个字符串

2024-10-03 17:22:20 发布

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

我有一个长字符串,其中包含如下数据:

category: 33 ; id: AF45DA; category: 54 ; id: KF65YA; category: 60 ; id: XC36IA;

我想从中创建如下列表:

new_list = [33,54,60]

基本上我只需要字符串中category:;之间的值,同时保持原始顺序。你知道吗

我可以创建一些似乎有效的东西,我想当它不能正常工作时,可能会有例外。我对Python还不熟悉,不太了解它的可能性。你知道吗

这是实际版本:

s = "category: 33 ; id: AF45DA; category: 54 ; id: KF65YA; category: 60 ; id: XC36IA;"
c = s.count("category")
z = 0
number_list = []
for x in range(z,c):
    val = s.split('category:')[x+1]
    number = val.split(' ;')[0]
    print (number)
    number_list.append(number.strip())

print ("All Values:", number_list)

Tags: 数据字符串idnumber列表new顺序val
2条回答

只需构造正则表达式:

import re

rgx = re.compile(r'category:\s*(\d+)\s*;')
number_list = rgx.findall('category: 33 ; id: AF45DA; category: 54 ; id: KF65YA; category: 60 ; id: XC36IA;')

这将提供:

>>> rgx.findall('category: 33 ; id: AF45DA; category: 54 ; id: KF65YA; category: 60 ; id: XC36IA;')
['33', '54', '60']

如果希望结果是int,可以使用map

import re

rgx = re.compile(r'category:\s*(\d+)\s*;')
number_list = list(map(int,rgx.findall('category: 33 ; id: AF45DA; category: 54 ; id: KF65YA; category: 60 ; id: XC36IA;')))

这将产生:

>>> number_list
[33, 54, 60]
s = "category: 33 ; id: AF45DA; category: 54 ; id: KF65YA; category: 60 ; id: XC36IA;"
s = s.split(";")
number_list = []
for ss in s:
    if "category" in ss:
        number_list.append(int(ss[10:-1]))

相关问题 更多 >