首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于双条件的txt中行的排序

问基于双条件的txt中行的排序
EN

Stack Overflow用户
提问于 2021-03-28 17:41:27
回答 1查看 73关注 0票数 0

我有一个很大的txt文件,其结构类似于:

  • title_topic -> ~1900不同值
  • title_foreach_post ->可以与title_topic或[]相同
  • post_number -->从null开始,然后上升到n

我想知道是否有一种方法可以实现a)重组并对所有具有相同title_topic和b的行进行排序(),然后根据逻辑数字顺序(1,2.9,10,11,12等)对它们进行排序。

先谢谢大家。

txt文件示例:

{"title_topic":"Résoudre un Proplème avec Go航行“、"title_foreach_post":"Résoudre un Proplème avec Go航行”、"post_number":"null"} {"title_topic":"Résoudre un Proplème avec Go航行“、"title_foreach_post":”Résoudre un Proplème avec Go航行“、"post_number":”1.“{"title_topic":”Résoudre un Proplème avec Go航行","title_foreach_post":"\nRe: Résoudre un nullème avec Go回程","post_number":“10.”{"title_topic":“百业金车r réservation annulée","title_foreach_post":"\nRe:百货金车公司rembourse réservation annulée","post_number":”null“{”title_topic“} {"title_topic":”大型金车公司rembourse réservation annulée ","title_foreach_post":"\nRe:业用金车公司重新登记退休制度","post_number":“1.”{"title_topic":“劳尔·戈德雷雷姆·雷姆·帕斯恩·雷姆·鲁内雷","title_foreach_post":"\nRe:劳尔·戈德卡·雷德培·劳埃德·劳役”,"post_number":“12.”{"title_topic":"Résoudre un problème avec航“,"title_foreach_post":“\n title_foreach_post: Résoudre un problème avec Go航行","post_number":”11.“{"title_topic":"Résoudre un Proplème nRe Go航行","title_foreach_post":”Résoudre un Proplème avec Go回程“,"post_number":”12“。

输出示例:

​

​

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-28 18:29:13

正如您在下面的代码中所看到的,我使用排序()内置函数按两个字段(e['title_topic'], e['post_number'])对条目列表进行排序。

例如,我使用io.StringIO()从文本字符串读取输入文件,以模拟文件输入,在现实生活中,您将使用常规文件读取。

在网上试试!

代码语言:javascript
复制
import io, json

text = r"""
{"title_topic": "Résoudre un problème avec Go voyage", "title_foreach_post": ["\nRe: Résoudre un problème avec Go voyage "], "post_number": "null"}
{"title_topic": "Résoudre un problème avec Go voyage", "title_foreach_post": ["\nRe: Résoudre un problème avec Go voyage "], "post_number": "1."}
{"title_topic": "Résoudre un problème avec Go voyage", "title_foreach_post": ["\nRe: Résoudre un problème avec Go voyage "], "post_number": "10."}
{"title_topic": "Loueur Goldcar ne rembourse pas une réservation annulée", "title_foreach_post": ["\nRe: Loueur Goldcar ne rembourse pas une réservation annulée "], "post_number": "null"}
{"title_topic": "Loueur Goldcar ne rembourse pas une réservation annulée", "title_foreach_post": ["\nRe: Loueur Goldcar ne rembourse pas une réservation annulée "], "post_number": "1."}
{"title_topic": "Loueur Goldcar ne rembourse pas une réservation annulée", "title_foreach_post": ["\nRe: Loueur Goldcar ne rembourse pas une réservation annulée "], "post_number": "12."}
{"title_topic": "Résoudre un problème avec Go voyage", "title_foreach_post": ["\nRe: Résoudre un problème avec Go voyage "], "post_number": "11."}
{"title_topic": "Résoudre un problème avec Go voyage", "title_foreach_post": ["\nRe: Résoudre un problème avec Go voyage "], "post_number": "12."}
"""

data = [json.loads(line) for line in io.StringIO(text) if line.strip()]
data = sorted(data, key = lambda e: (e['title_topic'],
    int(float(e['post_number'])) if e['post_number'] != 'null' else 0))
print(data)

输出:

代码语言:javascript
复制
[
    {
        "title_topic": "Loueur Goldcar ne rembourse pas une réservation annulée",
        "title_foreach_post": [
            "\nRe: Loueur Goldcar ne rembourse pas une réservation annulée "
        ],
        "post_number": "null"
    },
    {
        "title_topic": "Loueur Goldcar ne rembourse pas une réservation annulée",
        "title_foreach_post": [
            "\nRe: Loueur Goldcar ne rembourse pas une réservation annulée "
        ],
        "post_number": "1."
    },
    {
        "title_topic": "Loueur Goldcar ne rembourse pas une réservation annulée",
        "title_foreach_post": [
            "\nRe: Loueur Goldcar ne rembourse pas une réservation annulée "
        ],
        "post_number": "12."
    },
    {
        "title_topic": "Résoudre un problème avec Go voyage",
        "title_foreach_post": [
            "\nRe: Résoudre un problème avec Go voyage "
        ],
        "post_number": "null"
    },
    {
        "title_topic": "Résoudre un problème avec Go voyage",
        "title_foreach_post": [
            "\nRe: Résoudre un problème avec Go voyage "
        ],
        "post_number": "1."
    },
    {
        "title_topic": "Résoudre un problème avec Go voyage",
        "title_foreach_post": [
            "\nRe: Résoudre un problème avec Go voyage "
        ],
        "post_number": "10."
    },
    {
        "title_topic": "Résoudre un problème avec Go voyage",
        "title_foreach_post": [
            "\nRe: Résoudre un problème avec Go voyage "
        ],
        "post_number": "11."
    },
    {
        "title_topic": "Résoudre un problème avec Go voyage",
        "title_foreach_post": [
            "\nRe: Résoudre un problème avec Go voyage "
        ],
        "post_number": "12."
    }
]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66844325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档