按索引对字符串列表进行排序

时间:2020-10-01 07:33:35

标签: python

我有一个文本文件,里面充满了符号和数字,全都是字符串。我正在尝试将其移到另一个列表中,在该列表中索引编号之后进行排序。但是我是python的新手,并且不太确定如何做到这一点。我在“ a”中添加了元组,并将int与字符串分开。我现在想对整数进行排序。

sortedlist = []
with open("m_scrambled.txt") as file:
    for line in file:
            a = (int(line.partition(" ")[0]),line.partition(" ")[2])
            b=sorted(a)
            print(a)

我通过尝试对“ a”进行排序而遇到的错误。

'<' not supported between instances of 'str' and 'int'

文件摘要,希望您能帮助我变得更聪明!

150                                                                                                                                  
139                                        ,W@@@@@@@@@####*;;####@@@W@@@@##Wii;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::,,,,,,,,,:::
140                                        .xWW@@W@@@@##W+;;;;+W@@WWWWW@@##Wi;i;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::;;;::
141                                        `+@@@@@@@####Wii;;;iW###@@@@@###ni;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::,,,...``
138                                    `,;*n@@@@@@########i:;x###@@@@######@#;iii;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::,,..```...
146                                   .#xxxMWWWW@#######@n#++#n@#######@@WMMWWWWz;;;;;;;;;;;;;;;;;;;;;;:,.``                         
137                                 `:+zxMMMMMMMMMMWW@@##@:,,x##############W*iii;;;i;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::,,..```   
147                                 ``.+W@@@@@@@####Wxnz++****++znxW####@@@@@#@@z*iiii;;;;;;ii;;;;:,.``                              
142                                 `````.iM############Wi;;;;*W############M+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:,,...``       
136                               `;+zzznnxnnnnnnnxxxxxMMMxxxMMMMMMMMMMWWWWWWWWWMxz+i;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::,,,..``    
148                               ``.,;nW@@@@@@@@Wxz+*iii;;;;iii**+#nMW@@@@@@@@@x+*ii;;:::,,,..``                                    
149                               ```.:;+zzzz#+i:,.````  ``````````..,:;i+##zz#+;:..``                                               
135                              `*##zzzzzzzzzzznnxxMxxxxnnnnxxxxxxxxxMMxxxMMMMMMMMMMx#i;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::,,...``      
134                             `*+####zzzz#zzzznnnxxxxxnnnnnnnxxxxxxxxxxxxxxxMxxxxxMMMx#i;;;;i;;i;i;;;;;;;;;;;;::::,,,..````        
132                            :+#+####zzz#zzznzzzzzzzz#####zzznnnnnnnzzznnnnnnnxxxxxxxxxxxi`````````````````                        
145                            ``.,,,,:*xxMW@@@@#########niii*x@#######@@WMMW@@M+;;;;;;;;;;;;;;;;;;;;;;;;;;:,..`                     
133                            `i+#####zzz##zznnnnnznzzzzzzzznnnnnnnnxxnnnnxxxxxxxxxxxxxMxi:::::::::::::::,,,,,....`````             
130                           :+++####################zzzzzzzzznnnnzznnnzzzznnnzznnnnnnnnnxxx,                                       
131                           `*+#+#######zzzzz####zz#####z##zzzzzzzzzzzzznznnnnnnnnnxnnnnxxi                                        
143                           `..,::;;;;in##############@*;;;;+@#############@ni;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::,,.```            
128                          ,****++++++++++++#######zzznnnnzzzzznnxxxnnnnnzznnnn#zxnzzznWWWWMi                                      
127                          ;i****++++++*++#z###zzzzz#zz##zzzzzzzzznnxnnnzzzznnxn#xnzznMWMxxxz`                                     

1 个答案:

答案 0 :(得分:2)

我已经使用正则表达式在每一行的开头查找数字,并将其用作python排序的方法

proxy_cache_valid

如果您不想使用正则表达式,则下面将使用一种不太健壮的方法,该方法只是将行按空格字符分开,并使用第一项作为数字进行排序

import re

def sortByLeadingNumber(line):
    matches = re.match("^[\d]+", line)[0]
    return int(matches)

with open('scrambled_file.txt') as file:
    sortedLines = list(sorted(file.readlines(),key=sortByLeadingNumber))

print(sortedLines)

然后将其用作def sortByLeadingNumberNoRe(line): return int(line.split()[0]) 的{​​{1}}参数。