Мне дали несколько строк для работы. Каждый представляет набор данных и состоит из имени набора данных и связанной статистики. Все они имеют следующую форму:
s= "| 'TOMATOES_PICKED' | 914 | 1397 |"
Я пытаюсь реализовать функцию, которая будет анализировать строку и возвращать имя набора данных, первое число и второе число. Есть много этих строк, и у каждой есть свое имя и связанная статистика, поэтому я решил, что лучший способ сделать это - с помощью регулярных выражений. Вот что у меня есть:
def extract_data2(s):
import re
name=re.search('\'(.*?)\'',s).group(1)
n1=re.search('\|(.*)\|',s)
return(name,n1,)
Итак, я немного почитал регулярные выражения и выяснил, как вернуть имя. Для каждой из строк, с которыми я работаю, имя набора данных ограничено символом «», поэтому я нашел это имя. Эта часть отлично работает. Моя проблема с получением номеров.
Сейчас я думаю о том, чтобы попытаться сопоставить шаблон, которому предшествует вертикальная черта ('|'), затем что-нибудь (вот почему я использовал. *), А затем еще одну вертикальную черту, чтобы попытаться получить первый номер Кто-нибудь знает, как я могу сделать это в Python?
То, что я пробовал в приведенном выше коде для первого числа, возвращает в основном всю строку в качестве моего вывода, тогда как я хочу получить только число.
-Я очень новичок в программировании, поэтому я прошу прощения, если этот вопрос кажется рудиментарным, но я довольно усердно читал и искал ответы, которые близки к моему случаю, но безуспешно. Я ценю любую помощь.
Идея в том, что он сможет:
return(name,n1,n2)
так, что когда пользователь вводит строку, он может просто проанализировать строку и вернуть важную информацию. Я заметил, что в моих попытках получить числа так далеко, что он вернет число в виде строки. Есть ли способ вернуть n1 или n2 как просто число? Обратите внимание, что для некоторых строк n1 и n2 могут быть целыми числами или иметь десятичную дробь.