简介
跟进 this question .
目的:对元素个数不一致列表的最后一个元素进行排序
方法
代码
import os
cwd = os.getcwd()
for fn in os.listdir(cwd):
print(fn)
with open(fn, "r+") as f, open(cwd + "\\all.txt", "r+") as f2:
lines = sorted(f, key=lambda text: text.split('-', 1)[::-1])
print(lines)
my_new_list = [fn + " - " + x for x in lines]
print (my_new_list)
f2.write("\n".join(my_new_list))
样本
aa - http://cc
bb - http://bb
cc - http://aa
aa - aa - http://cc
bb - bb - http://bb
cc - cc - http://aa
aa - aa - aa - http://cc
bb - bb - bb - http://bb
cc - cc - cc - http://aa
输出
列表未按最后一个元素排序。看来排序发生在第二个元素上。
当前
sample.txt - aa - aa - aa - http://cc
sample.txt - aa - aa - http://cc
sample.txt - bb - bb - bb - http://bb
sample.txt - bb - bb - http://bb
sample.txt - cc - cc - cc - http://aa
sample.txt - cc - cc - http://aa
sample.txt - cc - http://aa
sample.txt - bb - http://bb
sample.txt - aa - http://cc
预期
sample.txt - cc - http://aa
sample.txt - cc - cc - http://aa
sample.txt - cc - cc - cc - http://aa
sample.txt - bb - http://bb
sample.txt - bb - bb - http://bb
sample.txt - bb - bb - bb - http://bb
sample.txt - aa - http://cc
sample.txt - aa - aa - http://cc
sample.txt - aa - aa - aa - http://cc
最佳答案
你的问题是 text.split('-', 1)
它只分割字符串一次(在 first '-'
).
你实际上想在 last '-'
中拆分,所以你想要 text.rsplit('-', 1)
*注意,rsplit
,而不是split
:-)
关于python - 对不一致数量的元素列表的最后一个元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25165701/