Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для VistaSV30
987 / 331 / 79
Регистрация: 10.04.2012
Сообщений: 1,239
Записей в блоге: 4

Ссылки на литературу

25.01.2022, 17:38. Показов 1481. Ответов 6

Студворк — интернет-сервис помощи студентам
Добрый день!
Подскажите как выбрать из текста все ссылки на литературу.

Мой вариант решения:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import re
txt = ['Разработке методов управления  посвящены исследования академика РАЕН Н. Н. Брушлинского [18, 28 – 37], С. В. Соколова [18, 28, 35 – 37], Б. М. Пранова [3], Н. Г. Топольского [424], Е. А. Мешалкина [45 – 54], А. В. Матюшина [55 – 60], В. Л. Семикова [61 – 65], А. А. Порошина [55 – 60, 66], А. А. Таранцева [67 – 72], В. Б. Коробко [37, 73], Я. С. Повзика [27, 74 – 76], В. М. Панарина [76 – 78], В. В. Теребнева [47, 74, 79 – 85], А.В. Подгрушного [82– 87], Д. В. Тараканова [79, 81, 88 - 90] и др.',
       'Деятельность  затрагивает широкий круг экономических, социальных и других вопросов, затрагивает государственные интересы, поэтому существует объективная необходимость перед повсеместным практическим внедрением изменений в системе функционирования пожарно–спасательных подразделений проводить теоретическое моделирование и локальные практические эксперименты.',
       'Начало применения методов математического [5] и имитационного моделирования деятельности  относится к концу 60-х годов XX века [18]. Моделирование применялось при решении вопросов, связанных с оптимизацией организации и управления подразделениями и органов управления  [29 – 32, 38].']
 
for ln in txt:
    mt = re.search(r'\[\d.+\d\]', ln)
    if mt != None:
        print(mt.group())
        
# Результат нужен в виде:
# [18, 28 – 37]
# [18, 28, 35 – 37]
# [3]
# [424]
Спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.01.2022, 17:38
Ответы с готовыми решениями:

Ссылки на литературу
Добрый день! Насколько я понял внешний вид ссылок на литературу в MS Word задается стилем прописанном в файле XML. Подскажите, что...

Ссылки на литературу по modbus для чайников
Здравствуйте. Прошу ко мне отнестись с пониманием. необходимо освоить modbus протокол, но по форумам как то каждый вопрос обмусоливать не...

Подскажитe ссылки на литературу по SQL Server 7.0 (эл.версии)
Очень прошу дать ссылки на электронные версии книг или других учебных материалов, которые касаются работы с MS SQL Server. PS. Если...

6
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
25.01.2022, 17:54
Лучший ответ Сообщение было отмечено VistaSV30 как решение

Решение

Python
1
2
for ln in txt:
    print(*re.findall(r'\[.+?]', ln), sep='\n')
Кликните здесь для просмотра всего текста

[18, 28 – 37]
[18, 28, 35 – 37]
[3]
[424]
[45 – 54]
[55 – 60]
[61 – 65]
[55 – 60, 66]
[67 – 72]
[37, 73]
[27, 74 – 76]
[76 – 78]
[47, 74, 79 – 85]
[82– 87]
[79, 81, 88 - 90]

[5]
[18]
[29 – 32, 38]

1
 Аватар для VistaSV30
987 / 331 / 79
Регистрация: 10.04.2012
Сообщений: 1,239
Записей в блоге: 4
25.01.2022, 18:42  [ТС]
iSmokeJC, спасибо еще раз за предыдущий ответ.
Иногда в тексте абзаца встречается, что в квадратных скобках стоит текст.
Правильно я сделал?
Python
1
2
3
4
5
6
7
8
9
10
import re
txt = ['Разработке [Текст] методов управления  посвящены исследования академика РАЕН Н. Н. Брушлинского [18, 28 – 37], С. В. Соколова [18, 28, 35 – 37], Б. М. Пранова [3], Н. Г. Топольского [424], Е. А. Мешалкина [45 – 54], А. В. Матюшина [55 – 60], В. Л. Семикова [61 – 65], А. А. Порошина [55 – 60, 66], А. А. Таранцева [67 – 72], В. Б. Коробко [37, 73], Я. С. Повзика [27, 74 – 76], В. М. Панарина [76 – 78], В. В. Теребнева [47, 74, 79 – 85], А.В. Подгрушного [82– 87], Д. В. Тараканова [79, 81, 88 - 90] и др.',
       'Деятельность  затрагивает широкий круг экономических, социальных[245] и других вопросов, затрагивает государственные интересы, поэтому существует объективная необходимость перед повсеместным практическим внедрением изменений в системе функционирования пожарно–спасательных подразделений проводить теоретическое моделирование и локальные практические эксперименты.',
       'Начало применения методов математического [5] и [Текст] имитационного моделирования деятельности  относится к концу 60-х годов XX века [18]. Моделирование применялось при решении вопросов, связанных с оптимизацией организации и управления подразделениями и органов управления  [29 – 32, 38].']
 
for ln in txt:
    ls = re.findall(r'\[.+?]', ln)
    for i in ls:
        if re.search(r'\[\D', i) == None:
            print(i)
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
25.01.2022, 18:50
Вместо проверки достаточно в файндолл искать в квадратных скобках не-буквы

Добавлено через 27 секунд
Вместо точки всмысле
1
 Аватар для VistaSV30
987 / 331 / 79
Регистрация: 10.04.2012
Сообщений: 1,239
Записей в блоге: 4
26.01.2022, 00:57  [ТС]
В итоге у меня получился такой код для поиска всех ссылок на литературу:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import re
txt = ['Разработке [Текст] методов управления  посвящены исследования академика РАЕН Н. Н. Брушлинского [18, 28 – 37, 42 - 53], С. В. Соколова [18, 28, 35 – 37], Б. М. Пранова [3], Н. Г. Топольского [424], Е. А. Мешалкина [45 – 54], А. В. Матюшина [55 – 60], В. Л. Семикова [61 – 65], А. А. Порошина [55 – 60, 66], А. А. Таранцева [67 – 72], В. Б. Коробко [37, 73], Я. С. Повзика [27, 74 – 76], В. М. Панарина [76 – 78], В. В. Теребнева [47, 74, 79 – 85], А.В. Подгрушного [82– 87], Д. В. Тараканова [79, 81, 88 - 90] и др.',
       'Деятельность  затрагивает широкий круг экономических, социальных[245] и других вопросов, затрагивает государственные интересы, поэтому существует объективная необходимость перед повсеместным практическим внедрением изменений в системе функционирования пожарно–спасательных подразделений проводить теоретическое моделирование и локальные практические эксперименты.',
       'Начало применения методов математического [5] и [Текст] имитационного моделирования деятельности  относится к концу 60-х годов XX века [18]. Моделирование применялось при решении вопросов, связанных с оптимизацией организации и управления подразделениями и органов управления  [29 – 32, 38].']
 
lst = []
for n, ln in enumerate(txt):
    ls = re.findall(r'\[.+?]', ln)
    for i in ls:
        sol = re.search(r'\[(\d+)\]',i)   # одиночные номера
        if sol != None:
            lst.append(int(sol.group(1)))  
            
        if re.search(r'\[\D', i) == None:  # интервалы
            intr = re.findall(r'\d+\s?[-–]\s?\d+', i)
            for j in intr:
                a = int(re.match(r'\d+', j).group(0))
                b = int(re.search(r'\d+$', j).group(0)) + 1
                lst += [c for c in range(a, b)]
                
            # замена интервалов на ноль
            intr_z = re.sub(r'\d+\s?[-–]\s?\d+', '0', i, 0)[1:-1]   
            intr_z = re.split(r'\,\s?', intr_z)
            lst += [int(c) for c in intr_z]
            
num = sorted(set(lst))[1:]                
print(num, end='')
Добавлено через 8 минут
первый цикл:
for ln in txt:
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
26.01.2022, 09:33
Лучший ответ Сообщение было отмечено VistaSV30 как решение

Решение

VistaSV30,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import regex as re
 
lst = set()
diaps = re.findall(r'(?<=\[.*?[^\d])\d+ - \d+(?=.*?])', ''.join(txt), overlapped=True)
for i in diaps:
    lst.update(range(*map(int, i.split('-'))))
lst.update(map(int, re.findall(r'(?<=\[.*?[^\d])\d+', ''.join(txt), overlapped=True)))
print()
print(*sorted(lst))
 
#your answer - equals
print(*sorted([3, 5, 18, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
               54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
               80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 245, 424]))
Можно еще скомпоновать, но мне лень )))
1
 Аватар для VistaSV30
987 / 331 / 79
Регистрация: 10.04.2012
Сообщений: 1,239
Записей в блоге: 4
26.01.2022, 11:12  [ТС]
iSmokeJC, тут даже regex задействован! Круто!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.01.2022, 11:12
Помогаю со студенческими работами здесь

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

посоветуйте хорошую литературу и ссылки для изучения основ матанализа с нуля, я новичок,
Посоветуйте книги из высшей математики, чтобы там рассказывалось об основе основ, у меня есть учебник Алгебра и начало Анализа 10-11,...

В тексте изменить все ссылки на ссылки html, за исключением ссылок в картинках
Например, у меня есть такой текст: some text ...

Duplicator некоторые ссылки, при переносе, не меняет на ссылки нового хоста
Для переноса сайтов на хостинг использую плагин Duplicator. Почему-то некоторые ссылки, при переносе, он не меняет на ссылки нового хоста. ...

Как заменить все ссылки на текст кроме ссылки моего сайта?
Всем привет! Есть выражение и есть текст ссылками. Где ссылки заменяю на слова &quot;Ссылки запрещены!&quot;. Всё работает! Вот теперь...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru