擅长:python、mysql、java
<p>实际上不需要一次迭代输出一个字符。在</p>
<p>首先,您应该将输出字符串拆分成几行,然后迭代这些行,一次处理一个。这是通过使用字符串的<code>splitlines</code>方法实现的(有关详细信息,请参见<a href="http://docs.python.org/2/library/stdtypes.html#str.splitlines" rel="nofollow">the docs</a>)。在</p>
<p>您可以使用<code>split()</code>进一步分割空白行,但是考虑到输出的规则性,<a href="http://docs.python.org/2/library/re.html" rel="nofollow">regular expression</a>很适合这个要求。基本上,如果第一个字符是<code>m</code>或<code>s</code>,那么接下来的数字就是您的id,<code>m</code>还是{<cd4>}匹配决定了下一步的操作。在</p>
<p>您可以使用名称来标识所标识的字符组,这使得正则表达式的读取更加容易,并且由于<code>groupdict</code>而使处理结果更加舒适。在</p>
<pre><code>import re
pattern = re.compile('^((?P<mem>m)|(?P<sem>s))\s+(?P<id>\d+)')
for line in output.splitlines():
m = pattern.match(line)
if m:
groups = m.groupdict()
_id = groups['id']
if groups['mem']:
print 'handling a memory line'
pass # handle memory case
else:
print ' handling a semaphore line'
pass # handle semaphore case
</code></pre>