@timka228

Как отпарсить текст в Python?

Есть строка вида
ID: 001; Username: Ivan; Balance: 01.00; Status: active;

Мне нужно получить данные между двоеточиями и точками с запятыми. Т.е. должно получится 3 string со следующими данными:
str id = "001"
str username = "Ivan"
str balance = "01.00"

Как мне их получить? Подскажите, пожалуйста, код.
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
@PavelMos
Здесь можно без парсинга регулярными выражениями обойтись, а использовать разделение функцией разделения строки split, которая встроена в каждый объект типа строка
Далее из результата разбивки
['ID: 001', ' Username: Ivan', ' Balance: 01.00', ' Status: active', '']
берутся элементы 0,1,2, снова разбиваются по ':'
' Username: Ivan' ->[' Username',' Ivan']
и затем исключается оставшийся слева пробел через взятие строки-результата как списка символов без нулевого элемента [1:]

str1='ID: 001; Username: Ivan; Balance: 01.00; Status: active;'
out=str1.split(';')
id=out[0].split(':')[1][1:]
username=out[1].split(':')[1][1:]
balance=out[2].split(':')[1][1:]
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
NeiroNx
@NeiroNx
Программист
Подобные вопросы напоминают мне про то как "двое из ларца" все все делали.
>>> data = "ID: 001; Username: Ivan; Balance: 01.00; Status: active;"
>>> dict(x.split(":") for x in data.replace(" ","").split(";") if ":" in x)
{'ID': '001', 'Username': 'Ivan', 'Balance': '01.00', 'Status': 'active'}
>>> import re
>>> dict(re.findall("([^:]+):\s?([^;]+);\s?",data))
{'ID': '001', 'Username': 'Ivan', 'Balance': '01.00', 'Status': 'active'}
>>>
Ответ написан
Комментировать
@Drill
text ='ID: 001; Username: Ivan; Balance: 01.00; Status: active;'

for key,val in (x.strip().split(': ') for x in text.split(';') if x):
    print(f"{key} = {val}")


ID = 001
Username = Ivan
Balance = 01.00
Status = active
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы