【发布时间】:2018-10-02 13:48:18
【问题描述】:
我有以下场景,其中一个文本文件具有以下输出:
DecodingIndex[ 1] PresentationIndex[ 2]
DecodingIndex[ 2] PresentationIndex[ 3]
DecodingIndex[ 3] PresentationIndex[ 1]
etc...
由于它显示 DecodingIndex 中的数字顺序,我希望它按 PresentationIndex 排序。像下面这样:
DecodingIndex[ 3] PresentationIndex[ 1]
DecodingIndex[ 1] PresentationIndex[ 2]
DecodingIndex[ 2] PresentationIndex[ 3]
有没有一种简单的方法可以在 Python 中做到这一点?这些数字一直达到数万。方括号之间的距离对于小于 10 的数字总是有间隙,然后拥抱数字例如 DecodingIndex[32100]
希望这是有道理的,感谢您的帮助!
=======
这是我尝试过的:
1)我遍历文件中的每一行并存储到一个行[]列表中
2) 遍历lines[] 列表中的每个项目,同时使用以下正则表达式模式re.compile(r'PresentationIndex\[(.*?)\]')
3)然后我使用 group() 从结果中获取匹配项并将这些值存储在一个新列表中
4)然后我通过首先将项目转换为int,然后排序,然后将其转换回这样的字符串来对列表进行数字排序
5)现在我遍历该列表并在其中插入单词 PresentationIndex 和方括号
6)使用现在排序的 PresentationIndex 列表,我遍历其中的每一个。对于每次迭代,我都会遍历整个输出文本文件以搜索相关行并将其附加到最终列表中。这样我就可以按照我想要的顺序获得输出。
我从一个大约 32,000 行的文件开始。完成这种排序大约需要 3 个小时...
【问题讨论】:
-
有一个简单的方法。 你尝试了什么?
-
我已经把这个问题抽象了很多。不确定如何粘贴所有代码..?但是我使用正则表达式来匹配 PresentationIndex 括号之间的所有内容,然后将它们按数字排序到一个列表中。然后使用它,遍历相应行的原始输出文件......简而言之
-
那么问题出在哪里?
-
不要粘贴所有代码,粘贴最少量的相关代码来说明问题。
-
执行我的脚本需要 3 个小时。这似乎效率太低,我想知道还有什么其他方法,因为我的方法肯定不是最好的:)