第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在通用列表中拆分unicode字符串

在通用列表中拆分unicode字符串

收到一只叮咚 2021-04-29 13:12:36
所以我的數(shù)據(jù)看起來像這樣:data = {"technology1": [       [       20, 0.02,      u'10.00,106.10,107.00,107.00,0.45',      u'24.00,-47.15,-49.50,-51.00,0.12',      u'11.00,0.35,0.00,0.00,0.92',      u'0.00',0.04,0.16, u'0.223196881092', u'f',0.02,     ],       [       100, 0.02,  u'10.00,106.10,107.00,107.00,0.45',  u'24.00,-47.15,-49.50,-51.00,0.12',  u'11.00,0.35,0.00,0.00,0.92', u'0.00', 0.04,  0.16, u'0.223196881092',  u'f', 0.01   ] ... ],       "technology2": ...}如您所見,它是一個字典,每個鍵都訪問一個列表列表,所有列表都具有相同的格式。每個“內(nèi)部”列表都包含整數(shù),浮點數(shù)。還有unicode字符串,其中一些帶有單個值,某些在unicode字符串中帶有一組5個數(shù)字。我想要的是:為每種技術(shù)制作一個陣列。在每個數(shù)組中,行將是上面的“外部”列表,列將是“內(nèi)部列表”的不同元素。理想情況下,需要將unicode轉(zhuǎn)換為字符串(因為我知道如何更好地使用它們),并且unicode字符串中的5個數(shù)字的集合需要擴(kuò)展為每個元素。即技術(shù)陣列20, 0.02, 10.00, 106.10, ... "f", 0.02100, 0.02, ...            "f", 0.01到目前為止的嘗試:for tech in data:    features = data[tech] # i.e. grab technologyn    for row in features:        for i in row[2:5]: # 2 til 5 defines the instance which are sets of 5            #print i,"\n"            i = str(i)            i = i.split(',')這是行不通的,當(dāng)我在代碼執(zhí)行后查看功能時,它是完全一樣的!這并不是一個完整解決方案的嘗試,因為它顯然不會將所有unicode類型都轉(zhuǎn)換為字符串,但這是一個墊腳石。我還嘗試使用列表理解為:for row in features:    [i.split(',') for i in row if (type(i)==unicode and "," in i)]
查看完整描述

2 回答

?
Smart貓小萌

TA貢獻(xiàn)1911條經(jīng)驗 獲得超7個贊

您需要為每行創(chuàng)建一個新的列表對象,然后替換原始列表值:


def row_to_values(row):

    values = []

    for col in row:

        if isinstance(col, unicode) and col != u'f':

            # split and convert all entries to float

            values += (float(v) for v in col.split(','))

        else:

            values.append(col)

    return values


for value in data.values():

    value[:] = [row_to_values(row) for row in value]

該value[:] = ...分配告訴Python來代替包含的所有指標(biāo)中的列表對象具有一組新的對象。由于每個value列表都是data詞典中的外部列表,因此將所有子列表替換為擴(kuò)展的行。


演示部分樣本數(shù)據(jù):


>>> data = {"technology1": [

...        [

...        20, 0.02,

...       u'10.00,106.10,107.00,107.00,0.45',

...       u'24.00,-47.15,-49.50,-51.00,0.12',

...       u'11.00,0.35,0.00,0.00,0.92',

...       u'0.00',0.04,0.16, u'0.223196881092', u'f',0.02,

...      ],

...       [

...        100, 0.02,

...   u'10.00,106.10,107.00,107.00,0.45',

...   u'24.00,-47.15,-49.50,-51.00,0.12',

...   u'11.00,0.35,0.00,0.00,0.92', u'0.00', 0.04,

...   0.16, u'0.223196881092',  u'f', 0.01

...    ]],

... }

>>> from pprint import pprint

>>> pprint(data["technology1"][0])

[20,

 0.02,

 u'10.00,106.10,107.00,107.00,0.45',

 u'24.00,-47.15,-49.50,-51.00,0.12',

 u'11.00,0.35,0.00,0.00,0.92',

 u'0.00',

 0.04,

 0.16,

 u'0.223196881092',

 u'f',

 0.02]

>>> pprint(row_to_values(data["technology1"][0]))

[20,

 0.02,

 10.0,

 106.1,

 107.0,

 107.0,

 0.45,

 24.0,

 -47.15,

 -49.5,

 -51.0,

 0.12,

 11.0,

 0.35,

 0.0,

 0.0,

 0.92,

 0.0,

 0.04,

 0.16,

 0.223196881092,

 u'f',

 0.02]

因此,可以通過返回新列表對象的函數(shù)調(diào)用來擴(kuò)展一行,使其包含字符串中的所有浮點值。


使用該函數(shù)替換所有字典值中的所有行:


>>> for value in data.values():

...     value[:] = [row_to_values(row) for row in value]

...

我們可以看到之前查看的第一行已更新:


>>> pprint(data["technology1"][0])

[20,

 0.02,

 10.0,

 106.1,

 107.0,

 107.0,

 0.45,

 24.0,

 -47.15,

 -49.5,

 -51.0,

 0.12,

 11.0,

 0.35,

 0.0,

 0.0,

 0.92,

 0.0,

 0.04,

 0.16,

 0.223196881092,

 u'f',

 0.02]

字典的其余部分也是如此:


>>> pprint(data)

{'technology1': [[20,

                  0.02,

                  10.0,

                  106.1,

                  107.0,

                  107.0,

                  0.45,

                  24.0,

                  -47.15,

                  -49.5,

                  -51.0,

                  0.12,

                  11.0,

                  0.35,

                  0.0,

                  0.0,

                  0.92,

                  0.0,

                  0.04,

                  0.16,

                  0.223196881092,

                  u'f',

                  0.02],

                 [100,

                  0.02,

                  10.0,

                  106.1,

                  107.0,

                  107.0,

                  0.45,

                  24.0,

                  -47.15,

                  -49.5,

                  -51.0,

                  0.12,

                  11.0,

                  0.35,

                  0.0,

                  0.0,

                  0.92,

                  0.0,

                  0.04,

                  0.16,

                  0.223196881092,

                  u'f',

                  0.01]]}


查看完整回答
反對 回復(fù) 2021-05-11
  • 2 回答
  • 0 關(guān)注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號