擅长:python、mysql、java
<p>我认为使用生成器来编写这篇文章会很有启发性(可能对某些人有用)。在</p>
<p>首先,代码:</p>
<pre><code> 1 #!/usr/bin/env python
2
3 def parser(str,len):
4 '''Generate parsed chunks from str based on a list of lengths, len'''
5 position = 0
6 for l in len:
7 yield str[position:position+l]
8 position = position + l
9
10 line = '66TP 1003 54.437269600149717.012388003107655.5139691177756'
11 lengths = [2, 2, 16, 16, 16, 16, 16, 16, 1, 1, 16, 16]
12
13 lines = [ chunk for chunk in parser(line, lengths) ]
14 print lines
</code></pre>
<p>现在,您可以在任何可以使用迭代器的地方使用解析器;例如,我在第13行使用它将所有字符串放入名为lines的列表中。在</p>
<p>您还可以以有趣的方式更改生成器,例如在第7行末尾添加.strip()。现在,您的字段已经从每个字段的前面和后面删除了空白。在</p>
<p>第7行修改如下:</p>
^{pr2}$
<p>现在您可以得到这个<em>修改的</em>输出:</p>
<pre><code>['66', 'TP', '1003', '54.4372696001497', '17.0123880031076', '55.5139691177756', '', '', '', '', '', '']
</code></pre>