Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 11, 2015 08:14:06

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Подсчет словосочетаний в файлах

Kir@
~3 минуты.
ОГО. Кошмар. Так это сейчас или раньше было?



Офлайн

#2 Сен. 11, 2015 10:53:33

Kir@
Зарегистрирован: 2015-08-13
Сообщения: 124
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет словосочетаний в файлах

Это то, что есть на c#. Плюс глюки и нестабильность.

Офлайн

#3 Окт. 21, 2015 07:48:40

Kir@
Зарегистрирован: 2015-08-13
Сообщения: 124
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет словосочетаний в файлах

Итак, 1 и 2 модуль я написал. Остался заключительный третий:
1. по очереди открыть все txt файлы в директории
2. найти текст “Первый\s+вопрос” и заменить текст отсюда и до конца:
s=re.sub(r'Первый(\s+)вопрос:',s).strip()
3. удалить все переносы:
s = re.sub(r'+', r' ', s).strip()
4. Во всех словах посчитать количество словосочетаний “Конский разрез”, “Яблонский карьер”.

Итак, часть 1:

txt_сzk=[]
l=os.listdir('ЦЗК')
for x in l:
    if x.endswith('txt'):  txt_сzk.append(x)
print (txt_сzk)

Часть 2:
for x in txt_сzk:
    s=re.sub(r'Первый(\s+)вопрос:',s).strip()
    s = re.sub(r'[\n]+', r' ', s).strip()

И тут у меня вопросы: как файл открыть, а потом его под тем же именем сохранить? Неделю копался в c#, из питона все забыл

Офлайн

#4 Окт. 21, 2015 08:19:40

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Подсчет словосочетаний в файлах

Тренируйте память. Хотя может это шарп мозги отшибает.

with open("xxx.dat","r",encoding="utf-8") as f:
   data=f.read()
with open("xxx.dat","w",encoding="utf-8") as f:
   f.write(data)



Отредактировано doza_and (Окт. 21, 2015 08:20:17)

Офлайн

#5 Окт. 21, 2015 08:44:54

Kir@
Зарегистрирован: 2015-08-13
Сообщения: 124
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет словосочетаний в файлах

Дубль 4. io.UnsupportedOperation: not readable.

def get_files_ext(source, exts):
    exts = tuple(exts)
    #print(exts)
    for root, dirs, files in os.walk(source):
        for name in files:
            if fnmatch.fnmatch(name, '*.txt'):
                yield os.path.join(root, name)
                 
def obrezka(seq, dest):
    for i in seq:
        #print(i)
        with open(i,'w') as f:
            data=f.read()
            print(data)
def main():
    source='ЦЗК'
    input_dir = 'ЦЗК'
    output_dir = 'ЦЗК'
    extensions = ('*.txt')
    files = get_files_ext(input_dir, extensions)
    obrezka(files, output_dir)
 
if __name__ == '__main__':
    main()

Отредактировано Kir@ (Окт. 21, 2015 11:37:58)

Офлайн

#6 Окт. 21, 2015 12:58:00

Kir@
Зарегистрирован: 2015-08-13
Сообщения: 124
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет словосочетаний в файлах

Вот так выводит пустые строки, количество которых равно количеству файлов:

def get_files_ext(source, exts):
    exts = tuple(exts)
    for root, dirs, files in os.walk(source):
        for name in files:
            if fnmatch.fnmatch(name, '*.txt'):
                yield os.path.join(root, name)
                 
def copy_to_dir(seq, dest):
    for i in seq:
        with open(i,'r') as f:
            data=f.read()
            print(data)
        
def main():
    source='ЦЗК/'
    input_dir = 'ЦЗК/'
    output_dir = 'ЦЗК/'
    extensions = ('*.txt')
    files = get_files_ext(input_dir, extensions)
    copy_to_dir(files, output_dir)
 
if __name__ == '__main__':
    main()

Офлайн

#7 Окт. 21, 2015 13:30:31

Kir@
Зарегистрирован: 2015-08-13
Сообщения: 124
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет словосочетаний в файлах

Пардоньте, нормально читается, просто как-то ухитрился все содержимое файликов потереть.

Офлайн

#8 Окт. 21, 2015 13:37:52

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Подсчет словосочетаний в файлах

Kir@
extensions = ('*.txt')
Это, кстати, не кортеж, а просто строка в круглых скобках.



Офлайн

#9 Окт. 21, 2015 14:27:45

Kir@
Зарегистрирован: 2015-08-13
Сообщения: 124
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет словосочетаний в файлах

Никак не могу удалить переносы строк:

ИА).
ПРОЕКТ РЕШЕНИЯ

data=f.read()
            data=re.sub(r'(Первый\s+вопрос[\A\a\Z\z\D\d]*)', r'', data).strip()
            data=re.sub(r'(\.[\s+\S+]ПРОЕКТ)', ' ', data).strip()
            data=' '.join(data.split())
            print(data)
Уже как только не извращался: \n, \r\n, и т.д. оставляет перенос(?) и все.

Офлайн

#10 Окт. 21, 2015 14:31:53

Kir@
Зарегистрирован: 2015-08-13
Сообщения: 124
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет словосочетаний в файлах

Да и не надо уже удалять, считает мой код, но не суммирует:

        with open(i) as f:
            data=f.read()
            data=re.sub(r'(Первый\s+вопрос[\A\a\Z\z\D\d]*)', r'', data).strip()
            data=re.sub(r'(\.[\s+\S+]ПРОЕКТ)', ' ', data).strip()
            data=' '.join(data.split())
            pattern='ТЫЦ'
            string = data
            found = re.findall(pattern, string)
            len(found) == string.count(pattern)
            print(len(found))
Как его заставить сложить все полученные значения?
>>> 
1
1
5
5
0
3
3
2
1
2
>>>

Отредактировано Kir@ (Окт. 21, 2015 14:41:25)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version