Я относительно неопытен в Python, и я попал в стену, используя ее, чтобы очистить некоторые текстовые данные в полезное формат. Эта функция текста, к счастью, регулярная, но окружающий формат имеет большую изменчивость - на одной строке может быть несколько (имя, значение, значение), может быть дополнительный бесполезный текст в любой конкретной строке (и этот «бесполезный текст» может включать любые символы, а не только алфавитные), может быть целые строки без полезных данных и т. Д.string = 'apples, red .... 0.15 apples, green ... 0.99\nbananas (bunch).......... 0.111\nfruit salad, small........1.35 [unwanted stuff #1.11 here]\nunwanted line here\nfruit salad, large .... 1.77 strawberry ........ 0.66 unwanted 00-11info here'
< /code>
Просто для того, чтобы сделать строку легче для вас, чтобы увидеть на Stackoverflow, это то, на что выглядят «данные» визуально, разделяя новички < /p>
apples, red .... 0.15 apples, green ... 0.99
bananas (bunch).......... 0.111
fruit salad, small........1.35 [unwanted stuff #1.11 here]
unwanted line here
fruit salad, large .... 1.77 strawberry ........ 0.66 unwanted 00-11info here
< /code>
Другая счастливая функция строки заключается в том, что «нежелательный текст» всегда будет следовать за значениями и будет в конце строки. Мне не нужно беспокоиться о том, что нежелательный текст находится рядом с (имя). < /P>
В конце дня я хочу получить < /p>
apples, red | 0.15
apples, green | 0.99
bananas (bunch) | 0.111
fruit salad, small | 1.35
fruit salad, large | 1.77
strawberry | 0.66
< /code>
или что -то подобное, которое можно загрузить в R, Excel и т. Д. Например, я попробовал < /p>
string = 'apples, red .... 0.15 apples, green ... 0.99\nbananas (bunch).......... 0.111\nfruit salad, small........1.35 [unwanted stuff #1.11 here]\nunwanted line here\nfruit salad, large .... 1.77 strawberry ........ 0.66 unwanted 00-11info here'
text = re.split(r"\.{3,}|\n", string)
print(text)
< /code>
, который расщепляется на новую линию или 3+ периода и дает < /p>
['apples, red ', ' 0.15 apples, green ', ' 0.99', 'bananas (bunch)', ' 0.111', 'fruit salad, small', '1.35 [unwanted stuff #1.11 here]', 'unwanted line here', 'fruit salad, large ', ' 1.77 strawberry ', ' 0.66 unwanted 00-11info here']
< /code>
, что близко, но проблемы с этим решением: < /p>
(1) Каждый элемент в списке не является правильной (именем, значением), так как разделение происходит между элементами (имя) и (значение). Например, 0,15 должен быть связан с «яблоками, красными», но вместо этого он делит элемент списка с последующими «яблоками, зелеными». Я, вероятно, мог бы сконструировать некоторую дополнительную постобработку, но я чувствую, что должно быть более элегантное решение, учитывая регулярность строки. То есть, должна быть некоторая режима, которая может искать «алфавитные символы», за которыми следует «3 или более периодов», за которым следует «номер», с любым дополнительным текстом после «числа», выброшенного как бесполезное. Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/796 ... ing-python
Сочетные элементы вокруг сепаратора с использованием Python ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение