Python中文
首页
教程
问答
标签
搜索
登录
注册
“Python文本处理”中的Schwartzian排序示例
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在浏览“Python中的文本处理”并尝试了它关于Schwartzian排序的<a href="http://gnosis.cx/TPiP/038.code" rel="nofollow noreferrer">example</a>。在</p> <p>我使用下面的结构作为示例数据,其中也包含空行。我按第五列对这些数据进行排序:<br/> 383230-49-78 1<strong>100034</strong>06文本9562文本720文本867<br/> 335067-152-18 3<strong>100030</strong>“文本”2400“文本”2342“文本”696<br/> 136592 21 230 3<strong>100035<strong>03年。文本'10368'文本'1838'文本'977</p> <p>用于Schwartzian排序的代码:</p> <pre><code>for n in range(len(lines)): # Create the transform lst = string.split(lines[n]) if len(lst) >= 4: # Tuple w/ sort info first lines[n] = (lst[4], lines[n]) else: # Short lines to end lines[n] = (['\377'], lines[n]) lines.sort() # Native sort for n in range(len(lines)): # Restore original lines lines[n] = lines[n][1] open('tmp.schwartzian','w').writelines(lines) </code></pre> <p>我不明白作者是怎么想用这段代码把短行或空行放到文件末尾的。行在if-else结构之后排序,从而将空行提升到文件顶部。当然,短行与示例中实现的自定义sort(第四个单词函数)一样工作。在</p> <p>这让我很烦,有什么想法吗?若我对这一点是正确的,那个么您如何确保短线实际上停留在文件的末尾?在</p> <p><strong>编辑:</strong>我注意到“\377”前后的方括号。这把sort()搞乱了,所以我去掉了那些括号,输出开始工作了。在</p> ^{pr2}$ <p>我接受了nosklo的回答,因为他很好地澄清了“\377”的含义并改进了算法。也非常感谢其他答案!在</p> <p>如果好奇的话,我使用了2MB的示例文件,在创建相同的输出文件时,自定义排序耗时0.95秒,使用Schwartzian排序耗时0.09秒。它起作用了!在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>空行不能通过测试</p> <pre><code>if len(lst) >= 4: </code></pre> <p>因此它将使用['\377']作为其排序键,而不是数据的第5列,即<code>lst[4]</code>(<code>lst[0]</code>是第一列)。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何添加虚拟方法
4 回答
如何添加表示整数的擦边字符串?
9 回答
如何添加要在Bokeh中使用的新font.ttf文件?
9 回答
如何添加要显示的矩阵XY轴编号和XY轴
10 回答
如何添加计数?
1 回答
如何添加计数器函数?
4 回答
如何添加计数器列来计算数据帧中另一列中的特定值?
8 回答
如何添加计数器来跟踪while循环中的月份和年份?
5 回答
如何添加计数并删除countplot的顶部和右侧脊椎?
4 回答
如何添加计时器wx.应用程序更新窗口对象的主循环?
3 回答
如何添加评论到帖子?PostDetailVew,Django 2.1.5
3 回答
如何添加评论拉梅尔亚姆
8 回答
如何添加诸如矩阵Python/Pandas之类的数据帧?
1 回答
如何添加谷歌地点自动完成到Flask?
3 回答
如何添加超时、python discord bot
10 回答
如何添加超过1dp的检查
8 回答
如何添加距离方法
9 回答
如何添加跟随游戏的敌人精灵
2 回答
如何添加路径以便python可以找到程序?
6 回答
如何添加身份验证/安全性以使用happybase访问HBase?
5 回答