Лучший способ получить подстроку между двумя символами в Python? - PullRequest
0 голосов
/ 27 апреля 2019

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

Я использую tweepy, и я сохранил tweepy твит в массиве текстовых объектов и установил этот текстовый объект в строковую переменную.

Пример: «RT @Acosta: Трамп защищает свои комментарии« очень хороших людей »о Шарлоттсвилле:« Люди там протестовали против сноса памятника… »

Это твит, я хочу часть "@Acosta" (или Acosta), Как бы я подстроку этой части?

Я попытался использовать библиотеку re, и, хотя она работала так же, как и на любой другой строке, она не работала на твите


match = re.search("\@(.*?)\:" , randTweet).group(1)

Ответы [ 2 ]

0 голосов
/ 27 апреля 2019

Невозможно воспроизвести вашу проблему.После исправления

SyntaxError: не-ASCII символ '\ xe2' в файле main.py в строке 3, но кодировка не объявлена;см. http://python.org/dev/peps/pep-0263/ для подробностей

, поскольку ваши данные, включая “ and ” and …, работают:

randTweet = """RT @Acosta: Trump defends his "very fine people" comments on Charlottesville: "People were there protesting the taking down of the monument..." """

import re

match = re.search("\@(.*?)\:" , randTweet).group(1)
print(match) # Acosta
0 голосов
/ 27 апреля 2019

Вы можете сделать что-то подобное с помощью split:

>>> test = '"RT @Acosta: Trump defends his “very fine people” comments on Charlottesville: “People were there protesting the taking down of the monument…"'
>>> mention = test.split('@')
>>> mention
['"RT ', 'Acosta: Trump defends his “very fine people” comments on Charlottesville: “People were there protesting the taking down of the monument…"']
>>> person = mention[1].split(':')
>>> person
['Acosta', ' Trump defends his “very fine people” comments on Charlottesville', ' “People were there protesting the taking down of the monument…"']
>>> person[0]
'Acosta'

Соберите все вместе:

>>> person = test.split('@')[1].split(':')[0]
>>> person
'Acosta'

Python-скрипт

test = '"RT @Acosta: Trump defends his “very fine people” comments on Charlottesville: “People were there protesting the taking down of the monument…"'

mention = test.split('@')
person = mention[1].split(':')

print(person[0])

Вы должны поставить некоторые проверки ошибок, чтобы подтвердить, что вы нашли упоминание или нет, прежде чем разбивать упоминание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...