Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
7 / 5 / 2
Регистрация: 23.06.2015
Сообщений: 57

Как и чем лучше распарсить строку вида 54040.49.294-NACHALO

21.01.2022, 23:51. Показов 941. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть строка

54040.49.294-NACHALO-3
54040.49.294-KONETS-2

Надо в отдельные переменные записать 54040.49.294 и NACHALO и 3 и т.д.
Какими инструментами лучше воспользоваться и как это сделать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.01.2022, 23:51
Ответы с готовыми решениями:

Распарсить строку вида 1+2
День добрый. Подскажите как распарсить строку вида 1+2 т.е. 1 в одну переменную, + в другую, 2 в третью

Как распарсить строку вида "имя = значение"
Всем здравствуйте. Вот моя задача, буду рад если мне кто нибудь поможет. Есть Форма в ней один richTextBox и одна кнопка с надписью...

Чем лучше распарсить вот такой лог
44:57.046006-94004,SDBL,2,process=rphost,p:processName=db,OSThread=43152,t:clientID=2959,.... 44:57.046006 - время 94004 -...

11
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
22.01.2022, 00:13
Python
1
2
3
4
5
6
s = ['54040.49.294-NACHALO-3',
     '54040.49.294-KONETS-2']
 
for i in s:
    a, b, c = i.split('-')
    print(f'{a}\n{b}\n{c}\n')
1
7 / 5 / 2
Регистрация: 23.06.2015
Сообщений: 57
22.01.2022, 00:21  [ТС]
Спасибо.
Хотелось бы подстраховаться.
Я железно знаю что будет -NACHALO-
А вот что будет до и после не уверен.
Вместо точек пользователи могут поставить дефис.
0
 Аватар для VistaSV30
986 / 330 / 79
Регистрация: 10.04.2012
Сообщений: 1,239
Записей в блоге: 4
22.01.2022, 14:09
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
import re
s = ['54040.49.294-NACHALO-3',
     '54040.49.294-KONETS-2']
 
lst = []
for i in s:
    result, ls = re.search(r'-[A-Za-z]+-', i), []
    ls.append(i[:result.start()])
    ls.append(i[result.start()+1 : result.end()-1])
    ls.append(i[result.end():])
    lst.append(ls)
    
print(lst)
1
7 / 5 / 2
Регистрация: 23.06.2015
Сообщений: 57
22.01.2022, 14:38  [ТС]
VistaSV30, Спасибо!

Подскажите где почитать про регулярки в питоне, хороший ресурс.

Добавлено через 18 минут
Разобрался и адаптировал под себя

Code
1
2
3
4
5
6
7
8
9
import re
s = ['54040.49.294-NACHALO-3',
     '54040.49.294-KONETS-2']
for s2 in s:
    result = re.search(r'-(NACHALO|KONETS)-', s2)
    str1 = s2[:result.start()]
    str2 = s2[result.start() + 1: result.end() - 1]
    str3 = s2[result.end():]
    print(str1,str2,str3)
0
 Аватар для VistaSV30
986 / 330 / 79
Регистрация: 10.04.2012
Сообщений: 1,239
Записей в блоге: 4
22.01.2022, 14:55
Мне советовали книгу "сборник рецептов", Ян Говертс. Для начального уровня более чем, книжка супер.
Если потом останется желание копнуть поглубже - тогда маэстро Фридл.

Самый необходимый минимум:
https://habr.com/ru/post/349860/
0
enx
 Аватар для enx
1189 / 765 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
22.01.2022, 15:50
Core метод, когда нет сложных последовательностей и не хочется в регулярки:

Python
1
2
3
txt = '''54040.49.294-NACHALO-3'''
res = ''.join(map(lambda x: x if x.isalnum() or x == '.' else ' ', txt)).split()
print(res)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
22.01.2022, 17:44
Цитата Сообщение от VistaSV30 Посмотреть сообщение
ls.append(i[:result.start()])
    ls.append(i[result.start()+1 : result.end()-1])
    ls.append(i[result.end():])
    lst.append(ls)

VistaSV30, leonidkorolev, ребзя, вы чего?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import re
 
s = ['54040.49.294-NACHALO-3',
     '54040.49.294-KONETS-2']
for s2 in s:
    result = re.search(r'-(NACHALO|KONETS)-', s2)
    str1 = s2[:result.start()]
    str2 = s2[result.start() + 1: result.end() - 1]
    str3 = s2[result.end():]
    print(str1, str2, str3, sep='\n')
    
print('--------- E Q U A L ------------')
    
for s1 in s:
    print(*re.split(r'-(NACHALO|KONETS)-', s1), sep='\n')
2
7 / 5 / 2
Регистрация: 23.06.2015
Сообщений: 57
22.01.2022, 19:41  [ТС]
iSmokeJC, Мне простительно, я новичок.
Спасибо. Хороший приём.
Только не понял что за * перед re?

Добавлено через 4 минуты
Цитата Сообщение от enx Посмотреть сообщение
txt = '''54040.49.294-NACHALO-3'''
res = ''.join(map(lambda x: x if x.isalnum() or x == '.' else ' ', txt)).split()
print(res)
Это что за магия?

Добавлено через 4 минуты
Цитата Сообщение от VistaSV30 Посмотреть сообщение
Самый необходимый минимум:
https://habr.com/ru/post/349860/
Статья огонь!
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
22.01.2022, 19:42
Цитата Сообщение от leonidkorolev Посмотреть сообщение
что за * перед re?
Ну убери и посмотри что будет
0
 Аватар для VistaSV30
986 / 330 / 79
Регистрация: 10.04.2012
Сообщений: 1,239
Записей в блоге: 4
23.01.2022, 11:24
iSmokeJC, спасибо еще раз за науку!
Оказывается, так можно и списки создавать
Python
1
2
3
4
5
6
7
8
import re
s = ['54040.49.294-NACHALO-3',
     '54040.49.294-KONETS-2']
ls = []
for s1 in s:
    ls.append([*re.split(r'-(NACHALO|KONETS)-', s1)])
    
print(ls)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
23.01.2022, 11:40
VistaSV30,
Python
1
ls = [re.split(r'-(NACHALO|KONETS)-', s1) for s1 in s]
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.01.2022, 11:40
Помогаю со студенческими работами здесь

Заменить строку вида А на строку вида Б многократно, не затронув другие строки файла
Есть текстовый файл. Файл довольно большой - 12 мегобайтов. В этом файле часто встречаются строки вида ABCDEF(8 + $A_BCDE) ...

Как лучше группировать объекты? Просто чем VB.NET лучше?
Я недавно установил VB.NET и столкнулся с такой проблемой: раньше, в VB6 я клал чекбоксы, бутоны на Frame контрол, потом на него еще...

Как лучше всего распарсить текст, который представляет из себя код C#
Пишу программку в которой требуется анализировать текст, сам текст представляет из себя C# код. например: while (true) { for...

Как распарсить строку:
Здравствуйте! Пользователь вводим в input type="text" функцию (например: 1-sin^2(2*x+5)) Возможно ли распарсить такую строку что бы...

Как распарсить строку
Всем привет! У меня есть строки: "Администратор - Klicke für Details">Администратор</span></strong></td> ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru