Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/103: Рейтинг темы: голосов - 103, средняя оценка - 4.72
4 / 4 / 2
Регистрация: 06.03.2019
Сообщений: 89

Извлечь номера телефонов из текстового файла

06.03.2019, 00:34. Показов 20946. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго вечера.
Ничего не шарю в программировании, есть исходный текст в форматах любых (txt/pdf/xlsx/word)
Вид текста:

дата 11/14/2016 специалист Васьков Юрий Смена: Дневная смена
маршрут Маршрут №6 автомобиль №6 №6, №6
174 перенос
№ заказ пак шт пр. клиент телефон М. Опл. Тип уровня сервиса # интервал адрес комментарии дата интервал
1 RU161109-472905 PACK19697671 1 Ольга Каверзина +7 (918) 335-43-52 Наличные Плюс 0 09:00 - 13:00 Краснодар, красина, Дом 3/3, Кв. 76

2 RU161110-466130 PACK19651968 1 Софья назаретян +7 (918) 398-07-81 Наличные Плюс 0 09:00 - 13:00 Краснодар, Базовская, Дом д.61

3 RU161111-260536 PACK19698066 3 Виктор Кипуров +7 (918) 441-97-56 Наличные Плюс 0 09:00 - 13:00 Краснодар, Речная,Чехова , Дом 4, Кв. 52

4 RU161111-522664 PACK19697905 2 Ирина Концевик +7 (918) 045-77-00 Наличные Плюс 0 09:00 - 13:00 Краснодар, ул им Братьев Дроздовых, Дом 41, Кв. 19

5 RU161111-252357 PACK19697840 1 Ирина Концевик +7 (918) 045-77-00 Наличные Плюс 0 09:00 - 13:00 Краснодар, ул им Братьев Дроздовых, Дом 41, Кв. 19

6 RU161104-298585 PACK19514804 3 Роман +7 (938) 435-93-29 Наличные Плюс 0 09:00 - 13:00 Краснодар, фурманова, Дом 62 9.11


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

Находил похожую тему на форуме, где написана формула для макроса для ворда, но она не работает.
Помогити - плес.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.03.2019, 00:34
Ответы с готовыми решениями:

Реализовать программу, извлекающую из файла номера телефонов
Реализовать программу, извлекающую из файла номера телефонов. Требования: исходный текст, из которого нужно выбрать все номера...

Извлечь номера мобильных телефонов
Добрый день, мастера! Прошу помощи. Есть файл владельцев гаражей с телефонами, нужно извлечь только мобильные телефоны. Они записаны...

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

17
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
06.03.2019, 00:59
sdlkfjhsdlktyhk, регулярные выражения

python регулярные выражения номер телефона


Номер, ведь может быть написан в нескольких из этих форматов

8(ddd)ddddddd;
+7(ddd)ddddddd;
8dddddddddd;
+7dddddddddd;

Добавлено через 1 минуту
Очень коротко и понятно:

/^(\s*)?(\+)?([- _():=+]?\d[- _():=+]?){10,14}(\s*)?$/

или

^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$



Съедает следующие телефоны:
+7(903)888-88-88
8(999)99-999-99
+380(67)777-7-777
001-541-754-3010
+1-541-754-3010
19-49-89-636-48018
+233 205599853
0
4 / 4 / 2
Регистрация: 06.03.2019
Сообщений: 89
06.03.2019, 10:19  [ТС]
ну ваше сообщение мне ясности не внесло.
у меня все номера в базе идут на : "+7 (9"
и что мне делать с этим: "
Цитата Сообщение от IRIP Посмотреть сообщение
Очень коротко и понятно:
/^(\s*)?(\+)?([- _():=+]?\d[- _():=+]?){10,14}(\s*)?$/
или
^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$
"
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
06.03.2019, 11:11
Цитата Сообщение от sdlkfjhsdlktyhk Посмотреть сообщение
ну ваше сообщение мне ясности не внесло.
есть в python3 модуль - re

https://docs.python.org/3/library/re.html

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

Я не знаю, кто и как решал бы подобную задачу, но:

1. Открываем файл в python3 (open('file')
2. Преобразуем в список где каждое слово - отдельный элемент

3. Ищем все вхождения по re.

берем каждое, ПЛЮС два перед ним

сохраняем в csv
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
06.03.2019, 11:12
sdlkfjhsdlktyhk, загуглить Использование регулярных выражений в Python для новичков
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
06.03.2019, 11:25
* * *

или

если файл в csv
то там еще проще

Добавлено через 7 минут
sdlkfjhsdlktyhk,

совсем, например, так:

file = open('text.txt', 'r')
s = file.read()
list = s.split(' ')

print(list)

где text.txt это текстовый файл

он выдаст что-то вроде

['1', 'RU161109-472905', 'PACK19697671', '1', 'Ольга', 'Каверзина', '+7', '(918)', '335-43-52', 'Наличные', 'Плюс', '0', '09:00', '-', '13:00', 'Краснодар,', 'красина,', 'Дом', '3/3,', 'Кв.', '76\n\n2', 'RU161110-466130', 'PACK19651968', '1', 'Софья', 'назаретян', '+7', '(918)', '398-07-81', 'Наличные', 'Плюс', '0', '09:00', '-', '13:00', 'Краснодар,', 'Базовская,', 'Дом', 'д.61\n\n3', 'RU161111-260536', 'PACK19698066', '3', 'Виктор', 'Кипуров', '+7', '(918)', '441-97-56', 'Наличные', 'Плюс', '0', '09:00', '-', '13:00', 'Краснодар,', 'Речная,Чехова', ',', 'Дом', '4,', 'Кв.', '52\n\n4', 'RU161111-522664', 'PACK19697905', '2', 'Ирина', 'Концевик', '+7', '(918)', '045-77-00', 'Наличные', 'Плюс', '0', '09:00', '-', '13:00', 'Краснодар,', 'ул', 'им', 'Братьев', 'Дроздовых,', 'Дом', '41,', 'Кв.', '19\n\n5', 'RU161111-252357', 'PACK19697840', '1', 'Ирина', 'Концевик', '+7', '(918)', '045-77-00', 'Наличные', 'Плюс', '0', '09:00', '-', '13:00', 'Краснодар,', 'ул', 'им', 'Братьев', 'Дроздовых,', 'Дом', '41,', 'Кв.', '19\n\n6', 'RU161104-298585', 'PACK19514804', '3', 'Роман', '+7', '(938)', '435-93-29', 'Наличные', 'Плюс', '0', '09:00', '-', '13:00', 'Краснодар,', 'фурманова,', 'Дом', '62', '9.11']

и вот с этими данными, уже можно работать

Добавлено через 2 минуты
* * *

или вот так - преобразуем каждую строчку в список

Python
1
2
3
4
5
6
7
8
9
10
file = open('text.txt', 'r')
 
list = []
 
for line in file:
    list.append(line.split(' '))
 
 
for x in list:
    print(x)
Добавлено через 15 секунд
и полчим

['1', 'RU161109-472905', 'PACK19697671', '1', 'Ольга', 'Каверзина', '+7', '(918)', '335-43-52', 'Наличные', 'Плюс', '0', '09:00', '-', '13:00', 'Краснодар,', 'красина,', 'Дом', '3/3,', 'Кв.', '76\n']
['\n']
['2', 'RU161110-466130', 'PACK19651968', '1', 'Софья', 'назаретян', '+7', '(918)', '398-07-81', 'Наличные', 'Плюс', '0', '09:00', '-', '13:00', 'Краснодар,', 'Базовская,', 'Дом', 'д.61\n']
['\n']
['3', 'RU161111-260536', 'PACK19698066', '3', 'Виктор', 'Кипуров', '+7', '(918)', '441-97-56', 'Наличные', 'Плюс', '0', '09:00', '-', '13:00', 'Краснодар,', 'Речная,Чехова', ',', 'Дом', '4,', 'Кв.', '52\n']
['\n']
['4', 'RU161111-522664', 'PACK19697905', '2', 'Ирина', 'Концевик', '+7', '(918)', '045-77-00', 'Наличные', 'Плюс', '0', '09:00', '-', '13:00', 'Краснодар,', 'ул', 'им', 'Братьев', 'Дроздовых,', 'Дом', '41,', 'Кв.', '19\n']
['\n']
['5', 'RU161111-252357', 'PACK19697840', '1', 'Ирина', 'Концевик', '+7', '(918)', '045-77-00', 'Наличные', 'Плюс', '0', '09:00', '-', '13:00', 'Краснодар,', 'ул', 'им', 'Братьев', 'Дроздовых,', 'Дом', '41,', 'Кв.', '19\n']
['\n']
['6', 'RU161104-298585', 'PACK19514804', '3', 'Роман', '+7', '(938)', '435-93-29', 'Наличные', 'Плюс', '0', '09:00', '-', '13:00', 'Краснодар,', 'фурманова,', 'Дом', '62', '9.11']
0
4 / 4 / 2
Регистрация: 06.03.2019
Сообщений: 89
06.03.2019, 12:15  [ТС]
как вообще в python работать.
скачал, установил, это типа командной строки что-то.
вбил код туда который вы напечатали:
Цитата Сообщение от IRIP Посмотреть сообщение
PythonВыделить код
1
2
3
4
5
6
7
8
9
10
file = open('text.txt', 'r')
list = []
for line in file:
* * list.append(line.split(' '))
for x in list:
* * print(x)
пишет типа файл не найден, надо как я понял вместо text.txt указать файл по пути?
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
06.03.2019, 13:51
sdlkfjhsdlktyhk, да, можно пройти начальный курс (долго), но хорошо

https://stepik.org/course/7215


а если быстро, то скачайте бесплатную версию wing101
и python 3.6

для начала
Вложения
Тип файла: txt text.txt (1.1 Кб, 32 просмотров)
Тип файла: zip code.zip (286 байт, 28 просмотров)
1
4 / 4 / 2
Регистрация: 06.03.2019
Сообщений: 89
06.03.2019, 14:26  [ТС]
Цитата Сообщение от IRIP Посмотреть сообщение
sdlkfjhsdlktyhk, да, можно пройти начальный курс (долго), но хорошо
https://stepik.org/course/7215
а если быстро, то скачайте бесплатную версию wing101
и python 3.6
для начала
Вложения
text.txt (1.1 Кб, 0 просмотров)
code.zip (286 байт, 0 просмотров)

все сделал и установил. теперь у меня открыто черное окно python:
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 22:20:52) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.

что дальше делать?

Добавлено через 8 минут
file = open('C:\Users\санчоус\Desktop\text.txt' )
File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
>>>
... list = []
>>>
... for line in file:
... list.append(line.split(' '))
...
...
... for x in list:
File "<stdin>", line 6
for x in list:
^
SyntaxError: invalid syntax
>>> print(x)
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
06.03.2019, 14:32
скачать программу wing101
и в ней открыть code.py
1
4 / 4 / 2
Регистрация: 06.03.2019
Сообщений: 89
06.03.2019, 14:37  [ТС]
Вообщем мне как-то с помощью python или другой проги надо сделать следующее:
1. открыть файл формата txt, весом около 20 мб.
2. найти все что начинается с "+7 ("
3. далее после найденного выделить последующие +7 ("918) 390-90-90" - 14 символов в каждом случае нахождения их в тексте
4. скопировать все найденное в столбик в новый текстовый документ, что бы из белиберды получилось следующее
+7 (918) 390-90-90
+7 (918) 390-91-90
+7 (918) 390-92-90
+7 (918) 390-93-90
5. без разницы в каком они будут порядке цифр убывания или возрастания.
6. номера не должны повторяться
end
0
4 / 4 / 2
Регистрация: 06.03.2019
Сообщений: 89
06.03.2019, 14:43  [ТС]
я в папке с установленной программой вообще не нашел исполняемого файла .exe
Миниатюры
Извлечь номера телефонов из текстового файла  
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
06.03.2019, 15:31
sdlkfjhsdlktyhk, его там и нет

скачайте в интернете программу wing101

http://www.wingware.com/downlo... os=windows
0
4 / 4 / 2
Регистрация: 06.03.2019
Сообщений: 89
06.03.2019, 18:31  [ТС]
вообщем помог мне разобраться мой старый знакомый программист, код для парса выглядит так:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import re
 
mass=[]
files = open(".//Novy_textovy_dokument.txt", 'r')
 
for line_u in files.readlines():
 
 
    pattern_u = re.compile(r'(\+7?.\(9\d{2}\)?.\d{3}-\d{2}-\d{2})')
    result_u = pattern_u.search(line_u)
 
    if result_u:
        result=result_u.group(0)
        mass.append(result)
mass=sorted(set(mass))
my_file = open("result.txt", 'w')
 
 
for i in mass:
    my_file.write(i+"\n")
my_file.close()
кто найдет эту тему, пользуйтесь.
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
06.03.2019, 19:32
Код выглядит так =)

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import re
 
mass = []
files = open(".//Novy_textovy_dokument.txt", 'r')
 
for line_u in files.readlines():
    pattern_u = re.compile(r'(\+7?.\(9\d{2}\)?.\d{3}-\d{2}-\d{2})')
    result_u = pattern_u.search(line_u)
 
if result_u:
    result = result_u.group(0)
    mass.append(result)
    mass = sorted(set(mass))
    my_file = open("result.txt", 'w')
 
 
for i in mass:
    my_file.write(i + "\n")
    my_file.close()
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
10.03.2019, 15:22
Регулярные выражения: извлечение из файла номеров телефонов
0
4 / 4 / 2
Регистрация: 06.03.2019
Сообщений: 89
12.03.2019, 22:55  [ТС]
что?
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
12.03.2019, 23:53
Цитата Сообщение от sdlkfjhsdlktyhk Посмотреть сообщение
что?
где?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.03.2019, 23:53
Помогаю со студенческими работами здесь

Вывести номера телефонов из файла
В файле могут встречаться номера телефонов, записанные в формате xx-xx-xx, xxx-xxx или xxx-xx-xx. Вывести все номера телефонов, которые...

Отобрать номера телефонов из файла по коду города
Дан текстовый файл, каждая строка состоит из номера телефона. Создать новый файл, состоящий из тех строк исходного файла, которые относятся...

Извлечь информацию из текстового файла
Нужно: извлечь 1. ФИО (или что есть из этого) - это в ячейку 1 2. Сумму (последнее числовое значение в текстовой строке) - это в...

Вывести номера строк исходного текстового файла и номера позиций в строке где встречаеться заданное слово
вывести номера строк исходного текстового файла и номера позиций в строке где встречаеться заданное слово

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


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
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(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru