Как извлечь определенные переменные из строкового python?

#python

#python

Вопрос:

У меня есть строка типа "A:22.0 /4.03 B:15.05 /3.0 C:120.15 /12.4" (с пробелами).


Я хочу извлечь числа и сохранить их в переменных ввода с определенными именами. Для примера, я хочу иметь переменную A1 = 22.0 , A2 = 4.03 , B1 = 15.05 , B2 = 3.0 , C1 = 120.15 , C2 = 12.4
Переменные в строке могут быть не в этом порядке, но всегда будут группы:
(variable name):(value1) /(value2) в таком порядке.

Приветствуется любая помощь или идея. Спасибо!

Комментарии:

1. Определите грамматику, затем напишите синтаксический анализатор, затем используйте этот анализатор для анализа ваших строк — просто! (Шучу, это непростая задача: попробуйте создать регулярное выражение, чтобы получить каждую группу отдельно, а затем попытаться проанализировать каждую группу)

2. Ну, я просто дам вам подсказку, чтобы вы начали. Проанализируйте строку (либо разделенные, либо регулярные выражения) и сохраните пары значений ключа в словаре. Вы никогда не указывали о потенциальных крайних случаях. Что делать, если вы видите две буквы «А» в строке?

3. Как насчет сохранения их в словаре, например nums = {'A':[22, 4.03], 'B':[15.05, 3], 'C':[120.15. 12.4]} ? Будет ли такой результат работать для вас? Тогда вы могли бы получить доступ к таким значениям, как nums['B'][1] .

Ответ №1:

Есть миллион способов сделать это. Регулярные выражения великолепны и могут быть полезны для пропущенных значений и других крайних случаев. Предполагая, что ваши данные никогда не пропускают значение или в любом другом формате, простая замена строки и разделение могут выполнить эту работу.

Вам будет сложно называть переменные на основе значений из строки (A1, A2 и т. Д.). Для хранения данных такого типа лучше использовать словарь.

Сложной частью этого является построение словаря, который в данном случае отсчитывает от 0 до длины элементов в разделенном списке на 3 секунды и использует эти числа для создания пар ключ: значение словаря.

Исходная строка

 x = "A:22.0 /4.03 B:15.05 /3.0, C:120.15 /12.4"
  

Замените специальные символы пробелом и разделите на пробелы (удалит лишние пробелы)

 b = x.replace(':',' ').replace('/',' ').split()
  

Дает вам

 ['A', '22.0', '4.03', 'B', '15.05', '3.0,', 'C', '120.15', '12.4']
  

Создайте словарь из ваших данных

 output = {b[x]:[b[x 1],b[x 2]] for x in range(0,len(b),3)}
  

Вывод:

 {'A': ['22.0', '4.03'], 'B': ['15.05', '3.0,'], 'C': ['120.15', '12.4']}
  

Затем получить доступ к данным как таковым:

 output['A'][0]
22.0
output['A'][1]
4.03
  

Ответ №2:

Чтобы извлечь их, вы должны использовать регулярное выражение: вот документация: RegEx (Python)

Но я рекомендую вам взглянуть на словари. Это обеспечит контроль ключей и значений, это выглядит так, как вам нужно. Вот пример:

 variableName = {
        "A1":22.0,
        "A2":4.03
    }
  

Вот ссылка на хороший учебник о том, как это использовать: https://www.pythonforbeginners.com/dictionary/how-to-use-dictionaries-in-python /

Комментарии:

1. Идея со словарями должна помочь мне с работой, спасибо!