使用python3提取混合text/json字符串列表的文本内容

w80xi6nr  于 2023-01-27  发布在  Python
关注(0)|答案(2)|浏览(116)

我有一个打包成JSON的文本语料库,我已经去掉了一些外部JSON层,现在我有了如下列表

data = [
    '“Ми підписали угоду, яка дозволяє громадянам України подорожувати без віз до Монголії. Це означає, що громадяни України можуть в’їжджати до Монголії без віз на 90 днів упродовж 180 днів” - ',
    {
        'type': 'link',
        'attributes': {
            'href': 'https://www.facebook.com/UkraineMFA/posts/2498886686831903',
            'target': '_blank',
            'rel': None
        },
        'content': [
            'повідомляє сторінка МЗС у Facebook'
        ]
    },
    ' із посиланям на посла України у Польщі Андрія Дещицю.'
]

每个list元素要么是一个文本字符串,要么是另一个JSON元素,编码为Python dict,最后我想将其简化为内容(这里已经很巧妙地命名为'content')。
完成这个任务的Python方法是什么?
P.S.最后的输出应该是一行纯文本,没有任何修饰(既不是Python语法也不是JSON),例如示例代码片段

“Ми підписали угоду, яка дозволяє громадянам України подорожувати без віз до Монголії. Це означає, що громадяни України можуть в’їжджати до Монголії без віз на 90 днів упродовж 180 днів” - повідомляє сторінка МЗС у Facebook із посиланям на посла України у Польщі Андрія Дещицю.
eqqqjvef

eqqqjvef1#

单线解决方案:

data = [
    '“Ми підписали угоду, яка дозволяє громадянам України подорожувати без віз до Монголії. Це означає, що громадяни України можуть в’їжджати до Монголії без віз на 90 днів упродовж 180 днів” - ',
    {'type': 'link', 'attributes': {'href': 'https://www.facebook.com/UkraineMFA/posts/2498886686831903', 'target': '_blank', 'rel': None}, 'content': ['повідомляє сторінка МЗС у Facebook']},
    ' із посиланям на посла України у Польщі Андрія Дещицю.'
]

flat = [item if type(item) is str else item["content"][0] for item in data]

final = "".join(flat)
print(final)

收益率

'“Ми підписали угоду, яка дозволяє громадянам України подорожувати без віз до Монголії. Це означає, що громадяни України можуть в’їжджати до Монголії без віз на 90 днів упродовж 180 днів” - повідомляє сторінка МЗС у Facebook із посиланям на посла України у Польщі Андрія Дещицю.'
flmtquvp

flmtquvp2#

import json

a=['“Ми підписали угоду, яка дозволяє громадянам України подорожувати без віз до Монголії. Це означає, що громадяни України можуть в’їжджати до Монголії без віз на 90 днів упродовж 180 днів” - ',    {'type': 'link', 'attributes': {'href': 'https://www.facebook.com/UkraineMFA/posts/2498886686831903', 'target': '_blank', 'rel': None}, 'content': ['повідомляє сторінка МЗС у Facebook']},    ' із посиланям на посла України у Польщі Андрія Дещицю.']

for x in range(len(a)):
    #y = json.loads(a[x])
    if isinstance(a[x], dict) and a[x]['content'] is not None:
        print(a[x]['content'])
    • 输出:**

['п о в д о м л я с т о р н к а М и С у Facebook']

相关问题