Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/92: Рейтинг темы: голосов - 92, средняя оценка - 4.85
 Аватар для mavar
0 / 0 / 0
Регистрация: 20.11.2011
Сообщений: 22

Как удалить из файла слова, содержащие определенный набор символов?

16.04.2014, 11:24. Показов 18785. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть большой файл со списком слов. Примерно такой:
uundu - uundu.ru
uune - uune.ru
uunm - uunm.ru
uuno - uuno.ru
uuns - uuns.ru
uunt - uunt.ru
uuoa - uuoa.ru
uuoaz - uuoaz.ru
uuob - uuob.ru
uuod - uuod.ru
uuodr - uuodr.ru
uuodu - uuodu.ru
uuoe - uuoe.ru
uuom - uuom.ru
uuon - uuon.ru
uuos - uuos.ru
uuot - uuot.ru
uuram - uuram.ru
uurun - uurun.ru
uusaz - uusaz.ru
uusd - uusd.ru
uusdr - uusdr.ru
uusdu - uusdu.ru


Файл нужно очистить от ненужных словосочетаний. Строки, которые содержат в себе любой из запрещенных наборов символов нужно удалить. Вот набор символов:
'oe', 'uo', 'ou', 'oa'
Т.е. если мы встречаем например в строке символы 'uo', то строку удаляем и переходим к следующей строке. Если в строке запрещенной последовательности символов не обнаружено, значит записываем эту строку в файл. И так по всему файлу пробегаем.

Помогите, пожалуйста написать функцию, чтобы она выдала файл уже без строк содержащих эти наборы.
Спасибо за помощь.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.04.2014, 11:24
Ответы с готовыми решениями:

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

Как удалить из текстовой строки определённый набор символов
И снова мне нужна помощь от мастеров. Итак, мне нужно удалить из полученной текстовой строки определённый набор символов. Часть...

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

8
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
16.04.2014, 11:28
mavar, обходишь файл циклом for и с помощью метода replace заменяешь не нужные последовательности на пустоту и все.
0
 Аватар для mavar
0 / 0 / 0
Регистрация: 20.11.2011
Сообщений: 22
16.04.2014, 11:43  [ТС]
А можно немного детальнее. Что-то у меня с синтаксисом не выходит.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
16.04.2014, 11:48
Показывай, что у тебя не получается
0
 Аватар для mavar
0 / 0 / 0
Регистрация: 20.11.2011
Сообщений: 22
16.04.2014, 12:04  [ТС]
Python
1
2
3
4
5
6
7
8
simbol = ('oe', 'uo', 'ou', 'oa',)
file_result = open("noduble.txt", "w+") # в этом файле список слов
stroka = file_result.readlines()
    for i in stroka:
        if simbol in stroka:
            continue
        else
            print stroka  #(тут нужно в файл писать)
Уже на этом этапе не работает!!!
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
17.04.2014, 19:17
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
28
29
30
31
32
file_result = """
uundu - uundu.ru
uune - uune.ru
uunm - uunm.ru
uuno - uuno.ru
uuns - uuns.ru
uunt - uunt.ru
uuoa - uuoa.ru
uuoaz - uuoaz.ru
uuob - uuob.ru
uuod - uuod.ru
uuodr - uuodr.ru
uuodu - uuodu.ru
uuoe - uuoe.ru
uuom - uuom.ru
uuon - uuon.ru
uuos - uuos.ru
uuot - uuot.ru
uuram - uuram.ru
uurun - uurun.ru
uusaz - uusaz.ru
uusd - uusd.ru
uusdr - uusdr.ru
uusdu - uusdu.ru
"""
simbol = ('oe', 'uo', 'ou', 'oa',)
 
for string in file_result.split('\n'):
    for i in simbol:
        string = string.replace(i, '')
    if string:
        print(string)
0
 Аватар для mavar
0 / 0 / 0
Регистрация: 20.11.2011
Сообщений: 22
17.04.2014, 19:19  [ТС]
Блин, как плохо, что форум лег вчера.
Короче написал я в итоге эту функцию, но через задницу. Может кто подскажет более изящное и понятное решение.

Вот, что вышло:

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
28
def main():
    doma = open('doma.txt', 'w')# в этот файл я запишу более красивые домены
    myfile = open("list.txt")
    lines = myfile.readlines()
    col = 0 # счетчик для слов в которых отсутствуют запрещенные символы
    delcol = 0 # счетчик для слов которых есть запрещенные символы
    a = 0 # метка, использую ее в условии чтобы пометить слово без запрещенных символов
    dellist = ('ui', 'uu', 'uo', 'oa', 'nt', 'bb', 'dd', 'mbd', 'dbr', 'bts',) # тут набор символов. Строки, в которых они встретятся нужно удалить. 
    
    for i in lines:
        i = i[0:len(i) - 1] # так я убрал перенос строки. ПОЯВЛЯЛАСЬ  ПУСТАЯ СТРОКА блин
        for d in dellist: # прохожу по запрещенным словам
            if i.find(d) > -1: #  нашел символ в строке, пометил
                a = 1 # присваиваю пееменной 1. Означает что в строке встретился один из запрещенных символов
        if a != 1: # если слово не помечено, пишу его в файл
            print i
            doma.write('%d.   %s \n' % (col + 1, i)) #пишу строчку с доменом в файл
            col = col + 1
        else:
            delcol = delcol + 1
        a = 0
    print 'выбрано %d  : \t удалено %s' % (col, delcol)
    doma.close()
 
 
 
if __name__ == '__main__':
    main()
0
363 / 334 / 38
Регистрация: 29.03.2011
Сообщений: 838
17.04.2014, 22:30
mavar,
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
# coding: utf-8
SRC = 'list.txt' # Исходный файл со списком доменов
OUT = 'doma.txt' # Файл с отфильтрованным списоком доменов
DELLIST = ('ui', 'uu', 'uo', 'oa', 'nt', 'bb', 'dd', 'mbd', 'dbr', 'bts',)
 
def grep_domain_names(src_list, dellist):
    """Возвратит массив имён, не содержащих что-либо из dellist"""
    result = [] # Строки удобнее и быстрее собирать в list
    for line in src_list:
        line = line.strip()
        if not line:
            continue
        for d in dellist:
            if d in line:
                break
        else:
            result.append(line)
    return result
 
def main():
    with open(SRC, 'r') as src_file:
        domains_list = grep_domain_names(src_file.readlines(), DELLIST)
    with open(OUT, 'w') as out_file:
        out_file.write( '\n'.join(domain_list) )
 
if __name__ == '__main__':
    main()
1
224 / 209 / 63
Регистрация: 26.05.2011
Сообщений: 363
18.04.2014, 07:24
Python
1
2
3
4
5
6
7
8
9
simbol = ('oe', 'uo', 'ou', 'oa')
with open("noduble.txt", "rt", encoding="utf-8") as fin,
        open("result.txt", "wt", encoding="utf-8") as fout:
    for line in fin:
        for part in simbol:
            if part in line:
                break
        else:
            fout.write(line)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.04.2014, 07:24
Помогаю со студенческими работами здесь

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

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

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

Удалить в строке слова, содержащие заданный набор букв
скажите что не так с кодом почему не работает нужно чтоб Удалил в строке слова, содержащие заданный набор букв. .model small .stack...

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
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 и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru