Как вернуть слово в строку, если оно начинается с определенного символа? (Python)
Я создаю reddit-бот для практики, который конвертирует доллары США в другие часто используемые валюты, и мне удалось заставить конверсионную часть работать нормально, но теперь я немного застрял, пытаясь передать символы, которые непосредственно следуют за долларом войдите в конвертер.
Вот как я хочу чтобы это работало:
def run_bot():
subreddit = r.get_subreddit("randomsubreddit")
comments = subreddit.get_comments(limit=25)
for comment in comments:
comment_text = comment.body
#If comment contains a string that starts with '$'
# Pass the rest of the 'word' to a variable
Так, например, если бы он проходил над комментарием, подобным этому:
"Я купил лодку за 5000 долларов, и это круто"
Было бы присвоить '5000' для переменной, которую я затем поместил бы через мой конвертер
Каков был бы лучший способ сделать это?
(Надеюсь, этой информации хватит, но если люди запутаются, я добавлю больше)
2 ответа
Вы могли бы использовать re.findall
функция.
>>> import re
>>> re.findall(r'\$(\d+)', "I bought a boat for $5000 and it's awesome")
['5000']
>>> re.findall(r'\$(\d+(?:\.\d+)?)', "I bought two boats for $5000 $5000.45")
['5000', '5000.45']
ИЛИ ЖЕ
>>> s = "I bought a boat for $5000 and it's awesome"
>>> [i[1:] for i in s.split() if i.startswith('$')]
['5000']
Если вы имеете дело с ценами, такими как число с плавающей запятой, вы можете использовать это:
import re
s = "I bought a boat for $5000 and it's awesome"
matches = re.findall("\$(\d*\.\d+|\d+)", s)
print(matches) # ['5000']
s2 = "I bought a boat for $5000.52 and it's awesome"
matches = re.findall("\$(\d*\.\d+|\d+)", s2)
print(matches) # ['5000.52']