簡體   English   中英

從字典列表中分割每個字典中的字符串值?

[英]Slicing string values in each dict from list of dicts?

我覺得這個問題的答案不是很復雜,但是我一生都無法解決。

我有一個字典清單。 字典中的鍵是整數(0, 1, 2) 值是包含無關信息的字符串,相關信息放在方括號中。 我想對字符串進行切片,以使方括號之間的內容為新值。 我想以這種方式更新每個字典,然后將每個字典重新打包到其列表中。

讓我們假裝這是我所擁有的:

Original = [{1: 'xxx [pear] yyy', 2: 'xxx [apple] zzz'}, {0: 'aaa [cat] yyy', 1: 'bbb [dog] zzz'}]

這就是我希望函數返回的內容:

[{1: 'pear', 2: 'apple'}, {0: 'cat', 1: 'dog'}]

我將如何去做呢? 編輯:我知道如何切片字符串如下:

slicev = v.split('[', 1)[1].split(']')[0]

def find_between( s, first, last ):
    try:
        start = s.index( first ) + len( first )
        end = s.index( last, start )
        return s[start:end]
    except ValueError:
        return ""

original = [{1: "xxx [pear] yyy", 2: "xxx [apple] zzz"}, {0: "aaa [cat] yyy", 1: "bbb [dog] zzz"}]

for dct in original:
    for key in dct:
        dct[key] = find_between(dct[key], "[", "]")

您可以使用正則表達式

import re
Original = [{1: "xxx [pear] yyy", 2: "xxx [apple] zzz"}, {0:" aaa [cat] yyy", 1: "bbb [dog] zzz"}]
for item in Original:
    for key in item:
         item[key]= re.findall("\[(.*?)\]",item[key])[0]

print Original

結果

[{1: 'pear', 2: 'apple'}, {0: 'cat', 1: 'dog'}]

請注意,這將更改原始列表。

我認為re模塊可以幫助您:

import re

original = [{1: 'xxx [pear] yyy', 2: 'xxx [apple] zzz'},
            {0: 'aaa [cat] yyy', 1: 'bbb [dog] zzz'}]

data = [{k: re.search(r'\[(.*?)\]', v).group(1) for k, v in d.items()}
        for d in original]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM