Skip to main content
 首页 » 编程设计

python之级联字符串拆分,pythonic 方式

2025年05月04日19me-sa

以 IANA 的格式为例:http://www.iana.org/assignments/language-subtag-registry

%% 
Type: language 
Subtag: aa 
Description: Afar 
Added: 2005-10-16 
%% 
Type: language 
Subtag: ab 
Description: Abkhazian 
Added: 2005-10-16 
Suppress-Script: Cyrl 
%% 
Type: language 
Subtag: ae 
Description: Avestan 
Added: 2005-10-16 
%% 

假设我打开文件:

import urllib 
f = urllib.urlopen("http://www.iana.org/assignments/language-subtag-registry") 
all=f.read() 

通常你会这样做

lan=all.split("%%")  

迭代 lan 和 split("\n") 然后迭代结果和 split(":"),有没有一种方法可以在 python 中一次性完成这个而无需迭代和输出仍然是这样的: [[["Type","language"],["Subtag", "ae"],...]...]?

请您参考如下方法:

作为一个单一的理解:

raw = """\ 
%% 
Type: language 
Subtag: aa 
Description: Afar 
Added: 2005-10-16 
%% 
Type: language 
Subtag: ab 
Description: Abkhazian 
Added: 2005-10-16 
Suppress-Script: Cyrl 
%% 
Type: language 
Subtag: ae 
Description: Avestan 
Added: 2005-10-16 
%%""" 
 
 
data = [ 
     dict( 
         row.split(': ') 
         for row in item_str.split("\n") 
         if row  # required to avoid the empty lines which contained '%%' 
     ) 
     for item_str in raw.split("%%")  
     if item_str  # required to avoid the empty items at the start and end 
] 
>>> data[0]['Added'] 
'2005-10-16'