Python Regex для синтаксического анализа Строка и возвращаемый кортеж

Мне дали несколько строк для работы. Каждая из них представляет собой набор данных и состоит из имени набора данных и связанной статистики. Они все они имеют следующий вид:

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 могут быть целыми или десятичными.

14
задан Simos Anderson 7 June 2011 в 05:02
поделиться