Форум сайта python.su
Здравствуйте. Помогите пожалуйста решить вот что: на стандартный ввод подается строка (иногда очень длинная), которую запрещено запоминать целиком, а нужно выдергивать из нее цифры (в строке любые символы, все числа считаются последовательностями цифр) и прерваться, когда встречаешь точку.
вот мой вариант
source = [int(i) for i in raw_input().split() if ord(i) in [ord(str(k)) for k in range(10)]]
Офлайн
ой, чорт, пытался найти ответ на свой вопрос и запостил не в ту ветку, извините
Офлайн
так raw_input же после энтера какраз всю строку и пошлет
Офлайн
нужно “послаться” по точке, а не по переносу строки
Офлайн
я про
FILLIPO
которую запрещено запоминать целиком
Офлайн
хорошо. пример строки, на которой я сыплюсь:
gh8k23locsm08.dfkjc999
последние три девятки не должны оказаться в цифрах, но ничего, кроме цифр, запоминать нельзя.
Офлайн
сделай чтоб сначала просто split получал , а затем 0 массив отрабатывай :)
Офлайн
нельзя написать source = raw_input().split(“.”) - я ведь запомню длинную строчку не только из цифр
вот ищу сейчас, как читать посимвольно, и не могу найти
Офлайн
sypper-pit, ааа, понял спасибо!!! :)
UPD
source = [int(i) for i in raw_input().split(".")[0] if ord(i) in [ord(str(k)) for k in range(10)]]
Отредактировано (Янв. 19, 2011 20:55:10)
Офлайн
и что что она длинная :) передаётся всё равно строка , надо только её отделить.
>>> qwe = "gh8k23locsm08.dfkjc999"
>>> qwe.split('.')
['gh8k23locsm08', 'dfkjc999']
>>> qwe.split('.')[0]
'gh8k23locsm08'
Офлайн