Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按特定列对字符串排序_Python_Sorting - Fatal编程技术网

Python 按特定列对字符串排序

Python 按特定列对字符串排序,python,sorting,Python,Sorting,我需要对文本文件进行排序。该文件包含行,行之间用新行分隔'\n'。 输入示例: ATOM 1591 O5' G A 958 5.497 -3.281 3.598 1.00 99.99 O ATOM 1592 C5' G A 958 4.345 -3.184 2.781 1.00 99.99 C ATOM 1 P C A 924 -12.106 6.485 -1

我需要对文本文件进行排序。该文件包含行,行之间用新行分隔
'\n'
。 输入示例:

ATOM   1591  O5'   G A 958       5.497  -3.281   3.598  1.00 99.99           O  
ATOM   1592  C5'   G A 958       4.345  -3.184   2.781  1.00 99.99           C 
ATOM      1  P     C A 924     -12.106   6.485 -14.650  1.00 99.99           P  
ATOM      2  OP1   C A 924     -12.981   6.565 -15.850  1.00 99.99           O  
ATOM      3  OP2   C A 924     -10.829   7.256 -14.620  1.00 99.99           O 
ATOM    429 2H4    C A 947       1.295  -1.142  -0.764  1.00 99.99           H  
ATOM    430  P     G A 948      -2.886  -4.112   7.863  1.00 99.99           P   
我想按第6列对它们进行排序(
958
924
等)

我试过这样做:

splitted = pdb_data.splitlines()
sorted(splitted, key = lambda residue: int(residue.split()[5]))
pdb_data = '\n'.join(splitted)
pdb_data +='\nTER\n'

但它没有分类-/

您使用了错误的方法进行排序;要就地排序,请使用:

返回一个新列表,保留原始列表未排序,但您的代码忽略返回值

您还可以将
sorted()
的返回值分配回
splitted
,但这在这里效率很低

您的排序本身工作正常:

>>> splitted = '''\
... ATOM   1591  O5'   G A 958       5.497  -3.281   3.598  1.00 99.99           O  
... ATOM   1592  C5'   G A 958       4.345  -3.184   2.781  1.00 99.99           C 
... ATOM      1  P     C A 924     -12.106   6.485 -14.650  1.00 99.99           P  
... ATOM      2  OP1   C A 924     -12.981   6.565 -15.850  1.00 99.99           O  
... ATOM      3  OP2   C A 924     -10.829   7.256 -14.620  1.00 99.99           O 
... ATOM    429 2H4    C A 947       1.295  -1.142  -0.764  1.00 99.99           H  
... ATOM    430  P     G A 948      -2.886  -4.112   7.863  1.00 99.99           P   
... '''.splitlines()
>>> splitted.sort(key = lambda residue: int(residue.split()[5]))
>>> pdb_data = '\n'.join(splitted)
>>> print pdb_data
ATOM      1  P     C A 924     -12.106   6.485 -14.650  1.00 99.99           P  
ATOM      2  OP1   C A 924     -12.981   6.565 -15.850  1.00 99.99           O  
ATOM      3  OP2   C A 924     -10.829   7.256 -14.620  1.00 99.99           O 
ATOM    429 2H4    C A 947       1.295  -1.142  -0.764  1.00 99.99           H  
ATOM    430  P     G A 948      -2.886  -4.112   7.863  1.00 99.99           P   
ATOM   1591  O5'   G A 958       5.497  -3.281   3.598  1.00 99.99           O  
ATOM   1592  C5'   G A 958       4.345  -3.184   2.781  1.00 99.99           C 
splitted.sort(key = lambda residue: int(residue.split()[5]))
>>> splitted = '''\
... ATOM   1591  O5'   G A 958       5.497  -3.281   3.598  1.00 99.99           O  
... ATOM   1592  C5'   G A 958       4.345  -3.184   2.781  1.00 99.99           C 
... ATOM      1  P     C A 924     -12.106   6.485 -14.650  1.00 99.99           P  
... ATOM      2  OP1   C A 924     -12.981   6.565 -15.850  1.00 99.99           O  
... ATOM      3  OP2   C A 924     -10.829   7.256 -14.620  1.00 99.99           O 
... ATOM    429 2H4    C A 947       1.295  -1.142  -0.764  1.00 99.99           H  
... ATOM    430  P     G A 948      -2.886  -4.112   7.863  1.00 99.99           P   
... '''.splitlines()
>>> splitted.sort(key = lambda residue: int(residue.split()[5]))
>>> pdb_data = '\n'.join(splitted)
>>> print pdb_data
ATOM      1  P     C A 924     -12.106   6.485 -14.650  1.00 99.99           P  
ATOM      2  OP1   C A 924     -12.981   6.565 -15.850  1.00 99.99           O  
ATOM      3  OP2   C A 924     -10.829   7.256 -14.620  1.00 99.99           O 
ATOM    429 2H4    C A 947       1.295  -1.142  -0.764  1.00 99.99           H  
ATOM    430  P     G A 948      -2.886  -4.112   7.863  1.00 99.99           P   
ATOM   1591  O5'   G A 958       5.497  -3.281   3.598  1.00 99.99           O  
ATOM   1592  C5'   G A 958       4.345  -3.184   2.781  1.00 99.99           C