Уведомления

Группа в Telegram: @pythonsu

#1 Май 15, 2014 20:03:46

Dima_Vlasov
Зарегистрирован: 2014-05-15
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Программирование пайтон

Добрый вечер!
У меня возникла проблема с написанием программы. ее цель вывести каждое слово исходного текста один раз, независимо от того сколько раз слово употребляется в тексте.
Не могли бы вы помочь мне в написании программы?

Офлайн

#2 Май 15, 2014 20:22:37

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

Программирование пайтон

text = 'слово1 слово2 слово2 слово3'
words = list(set(text.split(' ')))
for word in words:
    print word



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

#3 Май 15, 2014 21:31:57

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

Программирование пайтон

>>> s = 'one two three four one two three five'
>>> 
>>> ws = set()
>>> 
>>> lst = [w for w in s.split()
...        if w not in ws and ws.add(w) is None]
>>> lst
['one', 'two', 'three', 'four', 'five']
>>>



Отредактировано py.user.next (Май 15, 2014 21:33:13)

Офлайн

#4 Май 16, 2014 03:48:49

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Программирование пайтон

py.user.next
зачем проверить нет ли в множестве этого элемента?
Тогда можно просто list

Офлайн

#5 Май 16, 2014 05:12:34

Dima_Vlasov
Зарегистрирован: 2014-05-15
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Программирование пайтон

а если текст задан файлом txt?
f=open('text.txt','r')
s=f.read()
f.close
a=“”“”“”
for i in s:
if i=='.' or i==',' or i==';' or i==':' or i=='"' or i=='-' or i=='?' or i=='!':
pass
else:
a+=i
вот после этого я пытаюсь сделать выполнение программы,и результат вывести на экран.
я убираю знаки из текста,а после идет сортировка

Отредактировано Dima_Vlasov (Май 16, 2014 06:37:21)

Офлайн

#6 Май 16, 2014 06:57:21

valentjedi
Зарегистрирован: 2014-03-06
Сообщения: 26
Репутация: +  3  -
Профиль   Отправить e-mail  

Программирование пайтон

Dima_Vlasov
Можно так:

from string import punctuation as punct
import re
with open('text.txt', 'r') as infile:
    words = list(set(re.split('[{}]\s+'.format(punct), infile.read())))
    for word in words:
        print(word)

В Python 2.* вместо print(word) надо print word



#!/usr/bin/env python
# -*- coding: utf-8 -*-

Отредактировано valentjedi (Май 16, 2014 06:59:22)

Офлайн

#7 Май 16, 2014 09:06:46

GreyZmeem
От: Киев
Зарегистрирован: 2013-12-03
Сообщения: 147
Репутация: +  34  -
Профиль   Отправить e-mail  

Программирование пайтон

valentjedi

Python 2.7.3 (default, Mar 13 2014, 11:03:55) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print('Test')
Test
>>>
ActivePython 2.7.5.6 (ActiveState Software Inc.) based on
Python 2.7.5 (default, Sep 16 2013, 23:16:52) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> print('Test')
Test
>>>
Тут объсняется почему это работает в python 2

Отредактировано GreyZmeem (Май 16, 2014 09:08:10)

Офлайн

#8 Май 16, 2014 12:02:57

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

Программирование пайтон

Singularity
зачем проверить нет ли в множестве этого элемента?
слова выбираются в том же порядке, в котором стоят в тексте

Singularity
Тогда можно просто list
это если порядок не важен



Офлайн

#9 Май 16, 2014 12:25:45

Dima_Vlasov
Зарегистрирован: 2014-05-15
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Программирование пайтон

valentjedi
Dima_VlasovМожно так:
ругается на нулевую длину имени в поле

Офлайн

#10 Май 16, 2014 12:29:14

Dima_Vlasov
Зарегистрирован: 2014-05-15
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Программирование пайтон

Dima_Vlasov
а если текст задан файлом txt?f=open('text.txt','r')s=f.read()f.closea=“”“”“”for i in s: if i=='.' or i==',' or i==';' or i==':' or i=='"' or i=='-' or i=='?' or i=='!': pass else: a+=iвот после этого я пытаюсь сделать выполнение программы,и результат вывести на экран.я убираю знаки из текста,а после идет сортировка
а как можно сделать чтобы после написанной мной части программы сразу шла сортировка? предложенные варианты не работают, выходят ошибки

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version