<p>这不是csv问题,因为您没有csv。(事实上,你把我弄糊涂了一段时间,因为我正试图想象csv文件是什么样子的!)在</p>
<ol>
<li>{cd1>是否需要建立一个函数的标准化。在</li>
<li>使用<a href="http://docs.python.org/2/library/ast.html#ast.literal_eval" rel="nofollow">^{<cd2>}</a>将元组字符串安全地转换为实际的元组。在</li>
<li>使用<a href="http://docs.python.org/2/library/itertools.html#itertools.chain.from_iterable" rel="nofollow">^{<cd3>}</a>将所有元组组合成一个序列。在</li>
</ol>
<p>下面的完整代码实现为生成器<code>normalized_list()</code>。在</p>
<pre><code>l = [["('N', '', 'SHOWERS', '', 'RD', '11734', '11734', '', '')", "('61060', '61060')"], ['', '', 'NORA', '', 'RD', '10301', '10999', '10400', '10998', '61089', '61089']]
l2 = [['N', '', 'SHOWERS', '', 'RD', '11734', '11734', '', '', '61060', '61060'], ['', '', 'NORA', '', 'RD', '10301', '10999', '10400', '10998', '61089', '61089']]
import ast
from itertools import imap, chain
def is_tuple_string_row(L):
"""Return whether list L is a list of strings containing tuples"""
return len(L)==2 and all(s.startswith("('") and s.endswith("')") for s in L)
def normalized_list(L):
"""Yield lists in sequence L as lists of strings
Normalizes a list of strings of tuples down to a simple list of strings
"""
for item in L:
if is_tuple_string_row(item):
yield list(chain.from_iterable(imap(ast.literal_eval, item)))
else:
yield item
# You can iterate efficiently
for item in normalized_list(l):
print item
# or you can put the whole thing to a single new list
aslist = list(normalized_list(l))
# verify results
assert aslist == l2
</code></pre>