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

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

06.03.2019, 00:34. Показов 21066. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru