Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 12.12.2017, 08:35   #1
Grinvel
Пользователь
 
Регистрация: 25.09.2017
Сообщений: 16
Репутация: 10
По умолчанию Кортежи и вложенные циклы

Программа удаления лексем, находящихся в одном файле, из другого файла.
Получился такой код:
Код:

import sys
from fileinput import fileno
try:
    f1 = open(sys.argv[1], 'r')
    f2 = open(sys.argv[2], 'r')
except FileNotFoundError:
    print('File "readFile.txt" or "leksems.txt" not found')
    exit()
f3 = open('results.txt', 'w')
for line in f1:
    for line2 in f2:
        for elements in line2.split():
            line = line.replace(elements, '')
    f3.write(line)      
    f2.seek(0)
for f in f1, f2, f3:
    f.close()

Код рабочий, но должен быть написан в функциональном стиле.
Для этого необходимо объединить первые два цикла через кортеж, т.е. одновременное чтение файлов в одном цикле с помощью кортежа.
Как это можно реализовать?
Grinvel вне форума   Ответить с цитированием
Старый 12.12.2017, 21:40   #2
New man
Участник клуба
 
Регистрация: 24.01.2011
Сообщений: 685
Репутация: 241
По умолчанию

Код:

import sys
from fileinput import fileno
from functools import reduce
try:
    f1 = open(sys.argv[1], 'r')
    removed = reduce((lambda x,y: x|y),map(lambda x: set(x.split()), open(sys.argv[2], 'r'))))
except FileNotFoundError:
    print('File "readFile.txt" or "leksems.txt" not found')
    exit()
f3 = open('results.txt', 'w')
def clean_lexems(s):
     for lex in removed:
         s = s.replace(lex,'')
     return s
for line in map(clean_lexems, f1):
     f3.write(line)

for f in f1, f2, f3:
    f.close()

__________________
a.k.a. Angelicos Phosphoros
Мой сайт

Последний раз редактировалось New man; 12.12.2017 в 21:42.
New man вне форума   Ответить с цитированием
Старый 13.12.2017, 01:04   #3
Grinvel
Пользователь
 
Регистрация: 25.09.2017
Сообщений: 16
Репутация: 10
По умолчанию

То что нужно. Спасибо большое!
Grinvel вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C#.Вложенные циклы. Николай.К Помощь студентам 1 22.11.2016 22:11
Вложенные циклы kandrash C# (си шарп) 7 14.12.2012 11:46
Вложенные циклы kex Помощь студентам 2 11.10.2010 18:25
Вложенные циклы Chief Паскаль 3 06.01.2009 17:34


01:21.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru