Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将字符串拆分为多个部分以在循环中填充dict_Python_Dictionary - Fatal编程技术网

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

Python 如何将字符串拆分为多个部分以在循环中填充dict,python,dictionary,Python,Dictionary,我有一个需要从中提取信息的文件列表,我想用它填充一个dict。我知道如何用正则表达式提取信息,但dict部分让我感到困惑 代码 预期结果 mydict={'anna01':1,'bobby03':3,'dean120':120} 我在实际问题中使用的正则表达式是: for file in os.listdir(path): if file.endswith('.bmp'): image_name = file files.append(os.path.jo

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

代码

预期结果

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”

我想这段代码可能会帮助您:

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)
正如你所说的那样


如果你只想让他们的名字没有数字,那么你可以使用我在正则表达式中准备的groupName。

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

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)
正如你所说的那样


如果你只想让他们的名字没有数字,那么你可以使用我在正则表达式中准备的groupName。

我想你会得到你想要的输出

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 = {}
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}
结果

结果


你试过什么吗?你能给我们看一下吗?你能把它编辑成问题吗?这是一个比问题更复杂的字符串,但它是有效的,在这种情况下,职责是'value','file'是键。@Windy71正如你所说,你知道如何从字符串中提取数字,这段代码应该有效:my_dict={x:_get_numx for x in myList}_get_num是您提取数字的代码/您尝试过什么吗?你能给我们看一下吗?你能把它编辑成问题吗?这是一个比问题更复杂的字符串,但它是有效的,在这种情况下,职责是'value','file'是键。@Windy71正如你所说,你知道如何从字符串中提取数字,这段代码应该有效:my_dict={x:_get_numx for x in myList}_get_num是您提取数字的代码/Thank you Kitto,是mydict[key]=val行出于某种原因我无法将Bashs face放入桌面谢谢Kitto,是mydict[key]=val行出于某种原因我无法将Bashs face放入桌面
{'dean': 120, 'anna': 1, 'bobby': 3}