按索引对字符串列表排序

2024-06-16 11:26:38 发布

您现在位置: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`                                     

Tags: 字符串in排序linefileintiiiii
1条回答
网友
1楼 · 发布于 2024-06-16 11:26:38

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

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])

然后将其用作keysorted参数

相关问题 更多 >