Поиск последнего слова в tweedy tweet response python

Я получаю поток твитов с python и хотел бы извлечь последнее слово или узнать, где его ссылать.

например, в

НК не любит работать вместе www.linktowtweet.org

вернуться

str.rfind(' ')

python,twitter,

0

Ответов: 2


) + 1 :] # Вывести каждый символ * после * пробела. print ( last_word ) schema.org/Answer '>
0 принят

Я не знаком с tweepy, поэтому я предполагаю, что у вас есть данные в строке python, так что, возможно, есть лучший ответ.

Однако, учитывая строку в python, она просто извлекает последнее слово.

Решение 1

Используйте last_word. Идея здесь состоит в том, чтобы найти пространство, предшествующее последнему слову. Вот пример.

str.replace

Примечание. Если строка задана без слов, x0bx0c будет пустой строкой.

Теперь это предполагает, что все слова разделены пробелами. Чтобы обрабатывать новые строки и пробелы, используйте их, string.whitespaceчтобы превратить их в строки. Пробелы в python есть , но я предполагаю, что только новые строки и вкладки будут найдены в сообщениях Twitter.def last_word(text): text = text.replace(' ', ' ') # Replace newlines with spaces. text = text.replace(' ', ' ') # Replace tabs with spaces. text = text.rstrip(' ') # Remove trailing spaces. return text[text.rfind(' ')+1:] print(last_word("NC dona€™t like working together")) # Outputs "together".

Также см: string.whitespace

Таким образом, полный пример (завернутый как функция) будет

.*               # Match as many characters as possible.
s               # Until a whitespace ("	
x0bx0c
 ")
(                # Remember the next section for the answer.
S+              # Match a ~word~ (not whitespace) as possible.
)                # End saved section.

Это может быть лучшая ситуация для базового анализа. Для больших проблем есть что-то лучше.

Решение 2

Обычные выражения

Это способ обработки строк в python, что намного более гибко. REGEX, как их часто называют, использует собственный язык для указания части текста.

Например, задает последнее слово в строке.import re # Import the REGEX library. # Compile the code, (DOTALL makes . match ). LAST_WORD_PATTERN = re.compile(r".*s(S+)", re.DOTALL) def last_word(text): m = LAST_WORD_PATTERN.match(text) if not m: # If there was not a last word to this text. return '' return m.group(1) # Otherwise return the last word. print(last_word("NC dona€™t like working together")) # Outputs "together".

Вот он снова с более длинным объяснением.

r".*s([^.:s]+(?!.S|://))"

Итак, в python вы будете использовать это следующим образом.

import re # Import the REGEX library.

# Compile the code, (DOTALL makes . match 
).
LAST_WORD_PATTERN = re.compile(r".*s([^.:s]+(?!.S|://))", re.DOTALL)

def last_word(text):
    m = LAST_WORD_PATTERN.match(text)
    if not m: # If there was not a last word to this text.
        return ''
    return m.group(1) # Otherwise return the last word.

print(last_word("NC dona€™t like working together www.linktowtweet.org")) # Outputs "together".

Теперь, хотя этот метод намного менее очевидный, он имеет несколько преимуществ. Во-первых, это намного более настраиваемый. Если вы хотите совместить последнее слово, но не ссылки, регулярное выражение будет соответствовать последнему слову, но проигнорируйте ссылку, если это последнее.re.compile(r".*s([^.s]+(?!.S))", re.DOTALL)

Пример:

re.compile(r".*s([^.:s]+(?!.S|://))", re.DOTALL)

Второе преимущество этого метода - скорость.

Как вы можете попробовать это онлайн! здесь подход с регулярным выражением почти так же быстро, как и манипулирование строками, если не быстрее в некоторых случаях. (Я действительно обнаружил, что регулярное выражение выполняет .2 usec быстрее на моей машине, что в демо.)

В любом случае, выполнение регулярного выражения чрезвычайно быстро, даже в простом случае, и нет сомнений, что регулярное выражение быстрее, чем более сложный строковый алгоритм, реализованный в python. Поэтому использование регулярного выражения также может ускорить выполнение кода.


EDIT Изменен URL-адрес, исключающий регулярное выражение из

last_word("NC dona€™t like working together http://www.linktowtweet.org")

в

together

Так что вызов http://возвращается, togetherа не http://.

Чтобы как работает это регулярное выражение, посмотрите https://regex101.com/r/sdwpqB/2 .


0

Простой, поэтому, если ваш текст:

text = "NC dona€™t like working together www.linktowtweet.org"
text = re.sub(r'https?://.*[
]*', '', text, flags=re.MULTILINE) #to remove any URL
text = text.split() #splits sentence into words with delimiter=" "
last_word = text[-1]

Так что ты идешь! Теперь вы получите последнее слово «вместе».

питон, твиттер,
Похожие вопросы