我在下面有一些字符串:
123123|00|992|1111
222222|2222|19|922
997997|3333|922|77
我如何格式化(按len排序):
123123|1111|00|992
222222|2222|19|922
997997|3333|77|922
答案 0 :(得分:1)
使用str.split
& str.join
与sorted
<强>演示:强>
s = """123123|00|992|1111
222222|2222|19|922
997997|3333|922|77"""
data = ["|".join(sorted(i.split("|"), key=len, reverse=True)) for i in s.split("\n")]
print( "\n".join(data) )
<强>输出:强>
123123|1111|992|00
222222|2222|922|19
997997|3333|922|77
答案 1 :(得分:1)
试试这个
pd_occupation <- pd %>%
dplyr::filter(LoanStatus == "Chargedoff") %>%
group_by(Occupation) %>%
mutate(group_num = n())
table(pd_occupation$group_num)#to view the distribution
ggplot(subset(pd_occupation, group_num >= 361)) +
geom_bar(aes(fct_infreq(Occupation)), stat = 'count') +
ggtitle('Loan Charge-Offs by Occupation')
输出:
a='''123123|00|992|1111
222222|2222|19|922
997997|3333|922|77'''
'\n'.join(['|'.join(sorted(e.split("|"),key=len,reverse=True)) for e in a.split("\n")])
答案 2 :(得分:1)
OP的排序顺序不是基于字符串长度,因为长度为2之前的长度为3(最后两个段)
为此目的,需要自定义排序映射
ranks = {6:0, 4:1, 2:2, 3:3}
text = """123123|00|992|1111
222222|2222|19|922
997997|3333|922|77"""
result = '\n'.join(['|'.join(sorted(line.split('|'),key=lambda x: ranks[len(x)]))
for line in text.split('\n')])
print(result)
# outputs:
123123|1111|00|992
222222|2222|19|922
997997|3333|77|922