Форум сайта python.su
0
Добрый вечер!
У меня возникла проблема с написанием программы. ее цель вывести каждое слово исходного текста один раз, независимо от того сколько раз слово употребляется в тексте.
Не могли бы вы помочь мне в написании программы?
Офлайн
26
text = 'слово1 слово2 слово2 слово3' words = list(set(text.split(' '))) for word in words: print word
Офлайн
857
>>> 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)
Офлайн
75
py.user.next
зачем проверить нет ли в множестве этого элемента?
Тогда можно просто list
Офлайн
0
а если текст задан файлом 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)
Офлайн
3
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)
Отредактировано valentjedi (Май 16, 2014 06:59:22)
Офлайн
34
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 >>>
Отредактировано GreyZmeem (Май 16, 2014 09:08:10)
Офлайн
857
Singularityслова выбираются в том же порядке, в котором стоят в тексте
зачем проверить нет ли в множестве этого элемента?
Singularityэто если порядок не важен
Тогда можно просто list
Офлайн
0
valentjediругается на нулевую длину имени в поле
Dima_VlasovМожно так:
Офлайн
0
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вот после этого я пытаюсь сделать выполнение программы,и результат вывести на экран.я убираю знаки из текста,а после идет сортировка
Офлайн