如何将字符串拆分为多个部分以在循环中填充dict

2024-09-30 02:24:27 发布

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

我有一个需要从中提取信息的文件列表,我想用它填充一个dict。我知道如何用正则表达式提取信息,但dict部分让我感到困惑

代码

import re

mylist = ['anna01','bobby03','dean120']
mydict = {}

预期结果

mydict={'anna01':1,'bobby03':3,'dean120':120}

我在实际问题中使用的正则表达式是:

for file in os.listdir(path):
    if file.endswith('.bmp'):
        image_name = file
        files.append(os.path.join(path, file))
        print(os.path.join(path, file))
        print(get_burst_from_name(file))
        print(image_name)
        pattern = '_\d*%'
        result = re.findall(pattern, file)[0]
        result = result.replace("_","")
        duty = result.replace("%","")
        print('duty=', duty)

其中dict的键为“file”,值为“duty”


Tags: pathnameimagere信息osresultdict
3条回答

我想你会得到你想要的结果

import re
mylist = ['anna01','bobby03','dean120']
mydict = {}
for i in mylist:
    key = str(re.findall("\D+", i)[0])
    val = int(re.findall("\d+", i)[0])
    mydict[key] = val    
print("mydict = {}".format(mydict))

输出

mydict = {'anna': 1, 'bobby': 3, 'dean': 120}

我想这个小代码可能会帮助你:

import re
mylist = ['anna01','bobby03','dean120']
myDict = {}
pattern = '(?P<Name>[^\d]+)(?P<Number>\d+)'
for index,value in enumerate(mylist):
    searchedRegex = re.search(pattern , value)
    if searchedRegex:
        number = searchedRegex.group("Number")
        myDict[value] = int(number)
print(myDict)

输出

{'anna01': 1, 'bobby03': 3, 'dean120': 120}

正如你所说的那样

如果你只想知道他们的名字(没有数字),那么你可以使用我在正则表达式中准备的group("Name")

mylist = ['anna01','bobby03','dean120']
mydict = {}

for i in mylist:
    word = ''
    num = ''
    for j in i:
        if j.isalpha():
            word += j
        else:
            num += j
    if num[0] == '0':
        num = num[1:]

    mydict[word] = int(num)

print(mydict)

结果

{'dean': 120, 'anna': 1, 'bobby': 3}

相关问题 更多 >

    热门问题