Поиск идентификатора по другому URL Tweet - PullRequest
0 голосов
/ 03 апреля 2020

Я получаю идентификатор из URL-адреса твита,

url=["https://twitter.com/bbcworldservice/status/1240666763425128449?ref_src=twsrc%5Etfw", 
    "https://twitter.com/BILOSuperSaver/status/1240578769255051264/photo/1", 
   "https://twitter.com/Rangoli_A/status/1227792415676780545"]

for i in url:
   tid=i.split('/')[-1]
   print(tid)

Вывод, который я получаю

1240666763425128449?ref_src=twsrc%5Etfw
1
1227792415676780545

Я знаю, это базовый c метод для получения ID, я также попробовал другие методы, и результат тот же

Ожидаемый результат

1240666763425128449
1240578769255051264
1227792415676780545

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Проблема, с которой вы сталкиваетесь, заключается в том, что вы разделяете на '/' и получаете последний элемент, но это не всегда то, что вы хотите. Вместо этого вы можете использовать сопоставление с регулярным выражением, чтобы получить цифры после '/status/' части URL. Я думаю, это проще, чем разбивать строку на несколько символов.

#import re

url=["https://twitter.com/bbcworldservice/status/1240666763425128449?ref_src=twsrc%5Etfw", 
    "https://twitter.com/BILOSuperSaver/status/1240578769255051264/photo/1", 
   "https://twitter.com/Rangoli_A/status/1227792415676780545"]

for s in url:
    m = re.match('https://twitter.com/.+/status/(\d+).*', s)
    if m:
        print(m[1])

Вывод:

1240666763425128449
1240578769255051264
1227792415676780545

Шаблон регулярного выражения имеет одну группу захвата для чисел сразу после '/ status': (\d+). Если совпадение найдено, распечатайте эту группу, первую группу захвата.

0 голосов
/ 03 апреля 2020

Вы можете использовать тот факт, что идентификатор идет сразу после слова «status /», ваша программа разбивает каждую строку на «/» и берет последний элемент в этом списке, но идентификатор не всегда стоит последним - как видно из первого URL в вашем списке:

"https://twitter.com/bbcworldservice/status/1240666763425128449?ref_src=twsrc%5Etfw"

Из примеров в вашем списке я сделаю предположение, что идентификатор идет после слова «status» и разделяется по этому слову, принимая второе пункт (как мы хотим отказаться от того, что приходит раньше). Затем мы снова разделимся, используя «/» и взяв первый элемент (как мы хотим отбросить, что будет после):

for i in url:
    tid = i.split('status/')[1].split('/')[0].split('?')[0]
    print(tid)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...