<p>你可以使用<a href="https://docs.python.org/3/library/itertools.html#itertools.zip_longest" rel="nofollow noreferrer">itertools.zip_longest</a>
wich还可以通过向较短的列表提供默认值(如果未另行指定,则为None)来压缩不均匀的长列表:</p>
<p>在空格处拆分数据并将子列表馈送到zip:一次从0开始,一次从1开始,两次都仅使用其他(第二个)元素:</p>
<pre><code>data = ['I went to work but got delayed at other work and got stuck in a traffic and I went to drink some coffee but got no money and asked for money']
import itertools
d1 = data[0].split()
# use 2 partial lists, using every 2nd word, once staring at 0, once at 1
# you can change fillvalue=None to some other value or remove it - None is the default.
output = list(itertools.zip_longest(d1[::2],d1[1::2], fillvalue = None))
print(output)
</code></pre>
<p>输出:</p>
<pre><code>[('I', 'went'), ('to', 'work'), ('but', 'got'), ('delayed', 'at'), ('other', 'work'),
('and', 'got'), ('stuck', 'in'), ('a', 'traffic'), ('and', 'I'), ('went', 'to'),
('drink', 'some'), ('coffee', 'but'), ('got', 'no'), ('money', 'and'),
('asked', 'for'), ('money', None)]
</code></pre>
<hr/>
<p>提供给<code>zip_longest</code>的子列表如下所示:</p>
<pre><code>print(d1[::2])
['I', 'to', 'but', 'delayed', 'other', 'and', 'stuck', 'a', 'and', 'went', 'drink',
'coffee', 'got', 'money', 'asked', 'money']
</code></pre>
<p>以及</p>
<pre><code>print(d1[1::2])
['went', 'work', 'got', 'at', 'work', 'got', 'in', 'traffic', 'I', 'to', 'some',
'but', 'no', 'and', 'for']
</code></pre>
<hr/>
<p>以下部分改编自<a href="https://stackoverflow.com/questions/1894269/convert-string-representation-of-list-to-list">Convert string representation of list to list</a></p>
<pre><code># -*- coding: utf-8 -*-
import ast
# create your file as utf8
with open("myfile.txt","w", encoding="utf8") as f:
f.write("['भिन्केन NNP डच NNP प्रकाशन NN समूह NN एल्सेभियर NNP एन.भी. FB को PKO अध्यक्ष NN हुनुहुन्छ VBF । YF कन्सोलिडेटिड NNP गोल्ड NN फिल्ड्स NN पीएलसी NNP का PKO पूर्व JJ सभापति NN ५५ CD वर्षीय JJ रूडोल्फ NNP अग्न्यु NNP लाई PLAI यस DUM ब्रिटिस NNP औद्योगिक JJ समूह NN को PKO सल्लाहकार NN को PKO रूप NN मा POP मनोनयन NN गरिएको VBKO थियो VBX । YF एकताका RBO केन्ट NNP चुरोट NN को PKO फिल्टर NN बनाउन VBI प्रयोग NN भएको VBKO एक CD प्रकार NN को PKO अस्बेस्टोस NNP ']")
# load your file, using utf8
with open("myfile.txt","r",encoding="utf8") as f:
data = f.read()
# convert the loaded string literal into a python list
dataAsList = ast.literal_eval(data)
print(dataAsList)
print(type(dataAsList))
import itertools
d1 = dataAsList[0].split()
# use 2 partial lists, using every 2nd word, once staring at 0, once at 1
# you can change fillvalue=None to some other value or remove it - None is the default.
output = list(itertools.zip_longest(d1[::2],d1[1::2], fillvalue = None))
print(p)
</code></pre>
<p>输出:</p>
<pre><code>['भिन्केन NNP डच NNP प्रकाशन NN समूह NN एल्सेभियर NNP एन.भी. FB को PKO अध्यक्ष NN हुनुहुन्छ VBF । YF कन्सोलिडेटिड NNP गोल्ड NN फिल्ड्स NN पीएलसी NNP का PKO पूर्व JJ सभापति NN ५५ CD वर्षीय JJ रूडोल्फ NNP अग्न्यु NNP लाई PLAI यस DUM ब्रिटिस NNP औद्योगिक JJ समूह NN को PKO सल्लाहकार NN को PKO रूप NN मा POP मनोनयन NN गरिएको VBKO थियो VBX । YF एकताका RBO केन्ट NNP चुरोट NN को PKO फिल्टर NN बनाउन VBI प्रयोग NN भएको VBKO एक CD प्रकार NN को PKO अस्बेस्टोस NNP ']
<class 'list'>
[('भिन्केन', 'NNP'), ('डच', 'NNP'), ('प्रकाशन', 'NN'), ('समूह', 'NN'),
('एल्सेभियर', 'NNP'), ('एन.भी.', 'FB'), ('को', 'PKO'), ('अध्यक्ष', 'NN'),
('हुनुहुन्छ', 'VBF'), ('।', 'YF'), ('कन्सोलिडेटिड', 'NNP'), ('गोल्ड', 'NN'),
('फिल्ड्स', 'NN'), ('पीएलसी', 'NNP'), ('का', 'PKO'), ('पूर्व', 'JJ'),
('सभापति', 'NN'), ('५५', 'CD'), ('वर्षीय', 'JJ'), ('रूडोल्फ', 'NNP'),
('अग्न्यु', 'NNP'), ('लाई', 'PLAI'), ('यस', 'DUM'), ('ब्रिटिस', 'NNP'),
('औद्योगिक', 'JJ'), ('समूह', 'NN'), ('को', 'PKO'), ('सल्लाहकार', 'NN'),
('को', 'PKO'), ('रूप', 'NN'), ('मा', 'POP'), ('मनोनयन', 'NN'),
('गरिएको', 'VBKO'), ('थियो', 'VBX'), ('।', 'YF'), ('एकताका', 'RBO'),
('केन्ट', 'NNP'), ('चुरोट', 'NN'), ('को', 'PKO'), ('फिल्टर', 'NN'),
('बनाउन', 'VBI'), ('प्रयोग', 'NN'), ('भएको', 'VBKO'), ('एक', 'CD'),
('प्रकार', 'NN'), ('को', 'PKO'), ('अस्बेस्टोस', 'NNP')]
</code></pre>