Как вернуть слово в строку, если оно начинается с определенного символа? (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']
Другие вопросы по тегам