Объединить несколько строк из цикла for в один список - PullRequest
0 голосов
/ 27 июня 2019

Итак, в основном у меня есть JSON-файл, который мой скрипт читает и анализирует.

JSON-файл:

{
"messages": 
[
    {"timestamp": "123456789", "timestampIso": "2019-06-26 09:51:00", "agentId": "2001-100001", "skillId": "2001-20000", "agentText": "That customer was great"},
    {"timestamp": "123456789", "timestampIso": "2019-06-26 09:55:00", "agentId": "2001-100001", "skillId": "2001-20001", "agentText": "That customer was stupid\nI hope they don't phone back"},
    {"timestamp": "123456789", "timestampIso": "2019-06-26 09:57:00", "agentId": "2001-100001", "skillId": "2001-20002", "agentText": "Line number 3"},
    {"timestamp": "123456789", "timestampIso": "2019-06-26 09:59:00", "agentId": "2001-100001", "skillId": "2001-20003", "agentText": ""}
]
}

У меня есть сценарий Python, который удаляет «agentText» и цикл forвыводит каждую строку объекта за строкой

import json

    with open('20190626-101200-text-messages.json') as f:
      data = json.load(f)

    for message in data['messages']:
        splittext= message['agentText'].strip().replace('\n',' ').replace('\r',' ')
        if len(splittext)>0:
           print(splittext)

, что дает мне:

That customer was great
That customer was stupid I hope they don't phone back
Line number 3

Мне нужно добавить эти отдельные строки вместе, поэтому просто читаем:

That customer was great That customer was stupid I hope they don't phone back Line number 3

Поэтому я могу применить к нему некоторые стоп-слова / nltk.Как это можно сделать?

Ответы [ 2 ]

2 голосов
/ 27 июня 2019

Вы можете объединить все строки в одну строковую переменную:

res = ""
for message in data['messages']:
    splittext= message['agentText'].strip().replace('\n',' ').replace('\r',' ')
    if len(splittext)>0:
       res += splittext + " "

Или альтернативно использовать строковые методы с помощью списка:

res = []
for message in data['messages']:
    splittext= message['agentText'].strip().replace('\n',' ').replace('\r',' ')
    if len(splittext)>0:
       res.append(splittext)
print(" ".join(res))
1 голос
/ 27 июня 2019

Использование понимания с str.join и str.splitlines

Пример:

data = {
"messages": 
[
    {"timestamp": "123456789", "timestampIso": "2019-06-26 09:51:00", "agentId": "2001-100001", "skillId": "2001-20000", "agentText": "That customer was great"},
    {"timestamp": "123456789", "timestampIso": "2019-06-26 09:55:00", "agentId": "2001-100001", "skillId": "2001-20001", "agentText": "That customer was stupid\nI hope they don't phone back"},
    {"timestamp": "123456789", "timestampIso": "2019-06-26 09:57:00", "agentId": "2001-100001", "skillId": "2001-20002", "agentText": "Line number 3"},
    {"timestamp": "123456789", "timestampIso": "2019-06-26 09:59:00", "agentId": "2001-100001", "skillId": "2001-20003", "agentText": ""}
]
}

print(" ".join(j for msg in data["messages"] for j in msg["agentText"].splitlines()))

Выход:

That customer was great That customer was stupid I hope they don't phone back Line number 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...