Данные Твиттера: есть ли способ разделить на основе условия? - PullRequest
1 голос
/ 26 февраля 2020

Код Snip-It

#Date Bool
def isDate(string):
    elem = []
    splits = string.split()
    for element in splits:
        elem.append(element)
    if len(elem) > 5:
        return True if elem[2].isdigit() else False
    else:
        return False

#LOAD HANDLER
def loader(file):
    lines = []
    with open(file,encoding='utf8') as f:
        for line in f:
            lines.append(line)
    return lines

class define:
    def __init__(self, date, token, tweet):
            self.date = date
            self.token = token
            self.tweet = tweet

Данные Snip-It

Отказ от ответственности: эти твиты являются общедоступной c информацией. Это чисто образовательное исследование, которое не отражается ни на каком изображении этого учреждения или его людей в

Tue Feb 04 12:36:05 EST 2020|@WishYouWereMe__|RT @coriyonmarie: I’ll never forget how somebody did me.
Tue Feb 04 12:36:05 EST 2020|@c1Leonn|RT @nxlimaa: WHY am i incapable of doing natural makeup?????? why does everything always escalate ?????????
Tue Feb 04 12:36:05 EST 2020|@Oootentog|@staydilated13 Thank youuuu! ♥️
Tue Feb 04 12:36:05 EST 2020|@SushreeRonali|@GautamGambhir Jai Hind ??
Tue Feb 04 12:36:05 EST 2020|@Tank9trACE|4 months old at that
Tue Feb 04 12:36:05 EST 2020|@mathewpoptartm|RT @Flashyasf: Aye be careful who you catch feelings for, Shit don't be real onna other side ?
Tue Feb 04 12:36:05 EST 2020|@wakemeup0320|RT @NookNickn_r: Good night na~ ??❤️?? [LINK]
Tue Feb 04 12:36:05 EST 2020|@AkanniTheKing|@KiKardashiann We Got You ????
Tue Feb 04 12:36:05 EST 2020|@nuggythebear|@MarcusRashford Sheryar is a strong Mancunian name. Heralds back to the Sheryars of the 1700's.
Tue Feb 04 12:36:05 EST 2020|@Iam_Adrii|RT @iRealPedro: PUBLIC @TANNEDja ANNOUNCEMENT 

The Road Marshall speaks ‼️⚠️‼️ [LINK]
Tue Feb 04 12:36:05 EST 2020|@blushkths|how much do i need to pay for jungkook to step on my neck

Теория

Так что моя идея была разделена на основе того, является ли первый элемент строки датой, а функция isdate () делает это, но я не уверен, как добавить предыдущий элемент к текущему, чтобы элементы были объединены? Не уверен, насколько это понятно, но плохо попробую проиллюстрировать это:

Tue Feb 04 12:36:05 EST 2020|@Iam_Adrii|RT @iRealPedro: PUBLIC @TANNEDja ANNOUNCEMENT 

The Road Marshall speaks ‼️⚠️‼️ [LINK]

Итак, в этом фрагменте мы видим, что твит состоит из нескольких строк, и мне нужен способ соединить две строки вместе, чтобы Я могу делать операции на нем. Так что, если присоединиться, это будет выглядеть примерно так:

['Tue Feb 04 12:36:05 EST 2020|@Iam_Adrii|RT @iRealPedro: PUBLIC @TANNEDja ANNOUNCEMENT The Road Marshall speaks ‼️⚠️‼️ [LINK]']

Там нет \ n или подобное, поэтому я не уверен, как поступить. Со временем я буду помещать это в словарь, но сначала мне нужно выяснить основы.

1 Ответ

1 голос
/ 26 февраля 2020

Я предлагаю сначала переписать вашу функцию следующим образом:

def isDate(string):
    splits = string.split(maxsplit=3)
    return len(splits) > 3 and splits[2].isdigit()

, а затем использовать ее следующим образом:

def loader(file):
    lines = []
    with open(file,encoding='utf8') as f:
        for line_with_newline in f:
            line = line_with_newline.rstrip()
            if isDate(line):
                lines.append(line)
            else:
                lines[-1] += line
    return lines
...