169 похожих чатов

Привет! С утра занимаюсь крайне странным занятием. Есть 13к строк,

которые имеют описание ОКВЭДа вида 71.12.7 Кадастровая деятельность. Пытаюсь с помощью stringr отделить все цифры от слов. Причем у меня может быть как ##.##.#, так и ##.# или ##.##. Как правильно тогда паттерн стоит написать?

Исходный пример кода: D <- str_split_fixed(Source_2$OKVED, "[:digit:].[:digit:].[:digit:] ", 2)

18 ответов

18 просмотров

readr::parse_number() не подойдет?

Stan- Автор вопроса

Я бы разбил по точке при помощи separate

Вы бы скинули пример строки, где слова и цифры вместе

Stan- Автор вопроса

Я бы регулярной сделал. В pcre синтаксисе это выглядит так \d{1,2}\.\d{1,2}(\.\d)? [а-яА-Я ]+\.

Stan
71.12.7 Кадастровая деятельность.

Попробуйте что-то вроде этого: tibble(str = c("71.12.7 Кадастровая деятельность.", "71.12 Кадастровая деятельность.", "71 Кадастровая деятельность.")) %>% mutate(okved = str_extract(str, "^\\d{1,2}\\.\\d{1,2}\\.\\d{1,2}|^\\d{1,2}\\.\\d{1,2}|^\\d{1,2}"), name = str_extract(str, "(?<=\\d)\\s.+") %>% str_trim())

Dm Kb
Попробуйте что-то вроде этого: tibble(str = c("71....

мне кажется самым удобным вытащить все до пробела регуляркой, потом сделать tidyr::separate() по точке

Ivan Pozdniakov
мне кажется самым удобным вытащить все до пробела ...

Так мой вариант и вытащил все что до пробела и все что после... далее разбить оквэд на уровни, если нужно с помощью separate()

Dm Kb
Так мой вариант и вытащил все что до пробела и все...

просто меня пугает вот эта регулярка: "^\\d{1,2}\\.\\d{1,2}\\.\\d{1,2}|^\\d{1,2}\\.\\d{1,2}|^\\d{1,2}», мне кажется можно просто что-то в духе «(?.*)\\s»

Ivan Pozdniakov
просто меня пугает вот эта регулярка: "^\\d{1,2}\\...

я просто показал два подхода, можно заменить это выражение на ".+(?=\\s)"

Dm Kb
я просто показал два подхода, можно заменить это в...

нет такое не работает, заменил на ".{1,8}(?=\\s)" - и норм

Stan- Автор вопроса
Ivan Pozdniakov
readr::parse_number() не подойдет?

Не сработало нормально, обрезало :(

Stan- Автор вопроса

_fixed не для регулярок. В доках описано что для чего применять, почитай.

> sub("^([0-9.]+).*", "\\1", "71.12.7 Кадастровая деятельность") [1] "71.12.7"

по первому пробелу же надо делить через обычный word

Stan- Автор вопроса

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта