Пытаясь извлечь какое-то число из текста - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть текст, похожий на этот формат

«вес», «156,5», «рост», «6,3», «макс», «146»

«вес»,«136,3», «рост», «5,1», «макс», «205» ........

моя цель состоит в том, чтобы извлечь это число в группы, чтобы вес в первом столбце, роство втором столбце, максимум в третьем и т. д.

до сих пор мне удалось получить число для веса, используя это:

weight = re.findall (r '^ \ D * (\ d +. \ D +)', text, re.IGNORECASE | re.MULTILINE)

возможно ли разобрать число после определенного слова?

Я нашел похожие вопросы, но пробовал их и не работал и не могу думать ни о чем другом сейчас.

Ответы [ 3 ]

0 голосов
/ 18 апреля 2019

Возможно, один простой способ сделать это - выполнить итерации для каждого элемента списка и использовать:

try:
    # What you want to try
except:
    # if error

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

0 голосов
/ 18 апреля 2019

Во-первых, мне не очень нравится, как вводится информация.Скотт прав в своих комментариях в том, что это должно быть проанализировано по-другому.Но, оставив это в стороне, мы можем попытаться решить проблему следующим образом: вы, вероятно, захотите использовать позитивный взгляд в регулярном выражении.В вашей ситуации мы можем использовать его для сопоставления с определенной частью текста, если определенное слово произошло непосредственно перед ним.Вы можете добавить положительный вид сзади с (? <= Texthere), за которым следует исходная строка регулярного выражения.</p>

Если мы хотим найти все значения для веса:

import re

sample_inputs = ['"weight","156.5","height","6.3","max","146"',
                 '"weight","122.1","height","4.1","max","116"']

search_string = r"(?<=\"weight\",) *\"*(\d+.\d+)"
compiled_string = re.compile(search_string)

results = []
for sample_input in sample_inputs:
    results.append(re.findall(compiled_string, sample_input))

print(results) # >>> [['156.5'], ['122,1']]

Объяснение строки поиска:

(?<=\"weight\",) является положительным взглядом сзади и будет искать "weight",(включая кавычки)

*\"*(\d+.\d+) найдет от 0 до неограниченного пробела, за которым следует кавычка (вводная кавычка для вашего номера), а затем совпадет с фактическим числом в группе 1.

0 голосов
/ 18 апреля 2019

Рассмотрите возможность использования пакета pandas, в частности pandas.read_csv ().Облегчает жизнь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...