<p>帕特里克·莫里亚蒂</p>
<p>在我看来,你并没有特别提到游戏机,你主要关心的是一次把几条线连在一起接受治疗。只有一种方法可以重现您的问题:那就是,在空闲状态下执行程序,从一个文件中手动复制几行并粘贴到<code>raw_input()</code></p>
<p>为了理解你的问题,我得出了以下事实:</p>
<ul>
<li><p>当数据从文件复制并粘贴到<code>raw_input()</code>时,新行<code>\r\n</code>被转换为<code>\n</code>,因此{<cd1>}返回的字符串没有{<cd3>}。因此,在这个字符串上不可能有<code>split('\r\n')</code></li>
<li><p>在记事本+</em>窗口中粘贴包含孤立的<code>\r</code>和<code>\n</code>字符的数据,并激活特殊字符的显示,它会在所有行尾出现<strong><em>crlf</em></strong>符号,甚至在只有<code>\r</code>和<code>\n</code>的地方。因此,使用<em>记事本+</em>来验证换行符的性质会导致错误的结论</p></li>
</ul>
<p>一。在</p>
<p>第一个事实是你问题的起因。我忽略了这个转换影响从文件复制并传递到<code>raw_input()</code>的数据的先前原因,这就是为什么我在stackoverflow上发布了一个问题:</p>
<p><a href="https://stackoverflow.com/questions/5060220/strange-vanishing-of-cr-in-strings-coming-from-a-copy-of-a-files-content-passed">Strange vanishing of CR in strings coming from a copy of a file's content passed to raw_input()</a></p>
<p>第二个原因是你的困惑和绝望。不可能。。。。在</p>
<p>一。在</p>
<p>那么,怎么解决你的问题呢?在</p>
<p>下面是一个重现这个问题的代码。注意其中修改的算法,替换了应用于每一行的重复<strong>拆分</strong>。在</p>
<pre><code>ch = "date_time_of(date) Returns the time part.\r\n"+\
"divmod(a, b) Returns quotient and remainder.\r\n"+\
"enumerate(sequence[, start=0]) Returns an enumerate object.\r\n"+\
"A\rB\nC"
with open('funcdoc.txt','wb') as f:
f.write(ch)
print "Having just recorded the following string in a file named 'funcdoc.txt' :\n"+repr(ch)
print "open 'funcdoc.txt' to manually copy its content, and paste it on the following line"
mainText = raw_input("Enter your text to convert:\n")
print "OK, copy-paste of file 'funcdoc.txt' ' s content has been performed"
print "\nrepr(mainText)==",repr(mainText)
try:
for line in mainText.split('\r\n'):
name,_,arghelp = line.partition("(")
arg,_,hlp = arghelp.partition(") ")
print('<item name="%s">\n<arg>(%s)</arg>\n<help>%s</help>\n</item>\n' % (name,arg,hlp))
except:
print("Error!")
</code></pre>
<p>一。在</p>
<p>以下是delnan提到的解决方案:«从源代码读取,而不是人工复制并粘贴它。»
它与您的<code>split('\r\n')</code>配合使用:</p>
^{pr2}$
<p>一。在</p>
<p>最后,这里是Python处理修改后的人类副本的解决方案:提供<code>splitlines()</code>函数,该函数将所有类型的换行符(<code>\r</code>或{<cd4>}或{<cd3>})作为拆分器。所以更换</p>
<pre><code>for line in mainText.split('\r\n'):
</code></pre>
<p>通过</p>
<pre><code>for line in mainText.splitlines():
</code></pre>