簡體   English   中英

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

[英]Extraction of the text content of mixed text/json list of strings using python3

我有一個打包成 JSON 的文本語料庫。我已經剝離了一些外部 JSON 層,現在我有如下列表

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

每個列表元素要么是一個文本字符串,要么是另一個編碼為 Python dict 的 JSON 元素,最后我想將其縮減為它的內容(這里已經命名為“content”)。

完成此任務的 Pythonese 方法是什么?

PS 最后的 output 應該是一行沒有任何修飾的純文本(既不是來自 Python 語法也不是來自 JSON),即示例片段

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

單線解決方案:

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 із посиланям на посла України у Польщі Андрія Дещицю.'
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'])

Output:

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

暫無
暫無

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

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