簡體   English   中英

Python僅對序列中的子序列進行排序

[英]Python only sort sub-sequences in a sequence

我的數據如下:

{12,} {13,} {10,}
{16,} {17, 15,} {22,}
{27,} {28,24,29,} {28,} {28,}

每行都是一個序列。 對於每一行,如果{}中出現多個數字,我想在每個方括號中對它們進行排序(升序sort),同時保持其余的順序。 最后,我要刪除括號。 所以我希望我的輸出是這樣的:

12, 13, 10
16, 15, 17, 22
27, 24, 28, 29, 28, 28

我的想法是將每一行都轉換成一個列表,但是后來我完全陷入了困境。

一線使用re.sub功能。

>>> s = """{12,} {13,} {10,}
{16,} {17, 15,} {22,}
{27,} {28,24,29,} {28,} {28,}"""
>>> print(re.sub(r'(?<=\d) +(?=\d)', ', ', re.sub(r'\{[^}]*\}', lambda m: ', '.join(sorted(re.findall(r'\d+', m.group(0)), key=lambda x: int(x))), s)))
12, 13, 10
16, 15, 17, 22
27, 24, 28, 29, 28, 28

您可以使用嵌套列表推導: [[f for s in sequences for f in sorted(s)] for sequences in lines]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM