LINUX.ORG.RU

Python , чтение из файла до пробела


0

0

Как можно в питоне прочитать символы до пробела ? Ну или по другому - отдельные слова.

пример файла :

0.0 0.0 2.0 0.0 2.0 2.0 0.0 2.0

и так далее.

Нужно прочитать каждое число и присвоить ему переменную. Числа - это координаты точек. Как срезать по индексам и байтам знаю , но здесь это не подходит, так как числа от 0 до 100 . Нужно читать до пробела и после пробела.

В итоге нужно вычислить длину замкнутой линии проходящую через все точки. За ранее спасибо.



Последнее исправление: A-T-R (всего исправлений: 2)

Мозг вечером уже не варит.. Ну например так, хоть и быдлокод:

iorlas@lastangel:~/tmp$ cat tst.txt
0.0 10.0
20.0 21.5
1.0 2.0

>>> a = open("tst.txt")
>>> a.read().replace("\n", " ").split(" ")
['0.0', '10.0', '20.0', '21.5', '1.0', '2.0', '']

tia
()

хм... до сессии ещё далеко, а студентеги ужеодолевают. заочнег?

всосать файл в одну переменную, распарсить регэкспом

open FILE, 'file.txt' or die "Куда дел файл, паскуда?";
local $/;
$a = <FILE>;
@b = split/\s+/,$a;
close FILE;

helios ★★★★★
()
Ответ на: комментарий от tia

Или вот так, чтобы получить сразу матрицу координат:

>>> a = open("tst.txt").read().split("\n")
>>> map((lambda x: x.split(" ")), a)
[['0.0', '10.0'], ['20.0', '21.5'], ['1.0', '2.0'], ['']]
Хотя тоже, наверно, не лучший вариант.

tia
()
Ответ на: комментарий от tia

Это Perl... Нечего заочников баловать! :)

Кста, на счёт выкуривания: эта гадость всавляен ой-ё-ёой

helios ★★★★★
()
Ответ на: комментарий от tia

Кста, небольшая замануха:

print eval while <>

После этого жамкнуть ctrl+d - перл будет ждать вход. Вводи ему арифметические выражения, потом энтер - посчитает :)

helios ★★★★★
()
Ответ на: комментарий от tia

>Интересный питон. Что нужно выкурить чтобы он стал таким? Мне просто интересно.

Это хорошо что ты этим интересуешся. Это новая супер-пупер оптимизированя версия питона. Упрощена работа с файлами и регулярными выражениями. Частично введена типизация, словари начинаются с % а списки с @ и это очень удобно. Список аргументов доступен как обычный список. Введено много зарезервированых переменных. Всё очень удобно для обработки текста. Тебе такое обязательно понравится ;)

SV0L0CH
()
Ответ на: комментарий от SV0L0CH

>Это Perl...

Это хорошо что ты этим интересуешся

Да это был сарказм :)

Кста, небольшая замануха:

Да, ещё мне понравилась одна древняя статья «самые интересные недокументированные функции пёрла». Надо, кстати её найти.
Иногда такого не хватает пайтону, хотя оно против его идеологии, да и не всегда оно нужно.
Что-то такое вот будет на пайтоне:
while(True): eval(raw_input());

Хотя, думаю, можно короче.

tia
()
Ответ на: комментарий от SV0L0CH

Отступы не дурацкие, просто это другая идеология. На мой и не только взгляд - удобнее.

tia
()
Ответ на: комментарий от tia

>>Это хорошо что ты этим интересуешся

Да это был сарказм :)

Жалко что тут раньше отписались, ато бы можно было развить тему %)

SV0L0CH
()
Ответ на: комментарий от helios

нет , очник . Я учусь на преподавателя начальных классов с доп подготовкой в области информатики и ИТ . Сказали что должен поехать на региональную олимпиаду по информатике среди СПО г.Москвы.

Дали месяц на освоение списка заданий.

До этого только скрипты писал различные и хватало с головой. Теперь вот осваиваю питон .

Спасибо за помощь.

A-T-R
() автор топика
Ответ на: комментарий от A-T-R

Пайтон на олимпиадах? Не плохо.
Скрипты на чём писал? Баш? Или, не побоюсь этого, batch?
Печально, в общем.

tia
()
Ответ на: комментарий от tia

вообще писать можно на любом языке , обязательное условие это коменты к каждой строке.

Скрипты на баш совместно с зенити и диалогом.

перл не смотрел ещё , паскаль терпеть не могу с его переменными , больше ни чего особо не знаю. А питон все же немного знал до этого.

A-T-R
() автор топика
Ответ на: комментарий от tia

В смысле?

Видимо, тут меня выставляют крыса-куном, раскрывшим правду, что это перл раньше часа Ч. Возможно, хотели тебя погонять по статьям...

helios ★★★★★
()
Ответ на: комментарий от A-T-R

Перл и не смотри. Он крутой, да. Да и до какого-то момента был как пайтон сейчас. Однако если у тебя такие проблемы с пайтоном...
Скрипты на баше это хорошо, но всё-же оно не относится к опыту программирования.
А паскаль.. что именно в переменных не понравилось? То что переменные нужно описывать в начале? Ну уж извиняй, в си не лучше.
Напрягай мозг, в конце концов. Знаешь английский? Читай референсы. Не знаешь - читай русскую часть референс-доков и мини-учебники.

tia
()
Ответ на: комментарий от helios

Мне показалось что хотели меня потравить на тему «не знаешь как выглядит код пёрла». Хотя тоже бредовый выпад был бы.

tia
()
Ответ на: комментарий от A-T-R

перл не смотрел ещё

Возможно, не нужно: на освоение убер-тула нужны годы, если не целая жизнь...

И на остальные языки программирования ты будешь смотреть как на обрубки.

helios ★★★★★
()
Ответ на: комментарий от tia
iorlas@lastangel:~/tmp$ cat tst.txt 
0.0 10.0 
20.0 21.5 
1.0 2.0 
 
>>> a = open("tst.txt") 
>>> a.read().replace("\n", " ").split(" ") 
['0.0', '10.0', '20.0', '21.5', '1.0', '2.0', ''] 

Ппц, ты быдлокодер. Херово, наверное, вообще не знать стандартной библиотеки?

>>> a=open("tst.txt")
>>> a.read().split()
['0.0', '10.0', '20.0', '21.5', '1.0', '2.0']
anonymous
()
Ответ на: комментарий от tia

Мне показалось что хотели меня потравить на тему «не знаешь как выглядит код пёрла».

Хы... Тогда бы закинули нечто такое

perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see' 

Проще говоря, rm -rf ^_^

helios ★★★★★
()
Ответ на: комментарий от anonymous

Не знать стандартной библиотеки? Смешной ты.
Как-бы оно было специально написано так чтобы ТС не задавал тысяч вопросов. Да и так оно более очевидно.
К тому же я специально написал что сейчас уже голова не варит, спать пора.
В общем, выпады не делай, милашка, дал ещё один пример и не бузи.

tia
()
Ответ на: комментарий от tia

Ну мне раньше как то не особо нужно было программирование. Нужды покрывали скрипты. Эт щас вот озадачили , решил освоить. Сегодня вот заставил себя начать изучать новый язык. И наткнулся на проблему. Самому решить не удалось , в инете тож не нашел , хотя вроде искать умею . Вот попросил помощи у знающих людей.

A-T-R
() автор топика
Ответ на: комментарий от helios

Вообще можно и короче. Лень вспоминать пёрловые фичи.

tia
()
Ответ на: комментарий от A-T-R

Ну как сказать. Искать готовое решение каждой проблемы - бред.
Придумай путь решения, раздели его на простые детали и ищи их. Пробуй воспользоваться инструментарием что дан.

tia
()
Ответ на: комментарий от tia

Спасибо , будем стараться . Учиться учиться и ещё раз учиться , как завещал нам дедушка Ленин.

A-T-R
() автор топика
Ответ на: комментарий от SV0L0CH

^_^ помоему этот боян уже все наизусть знают

А это? :)

:(){ :|:&};:

sh. Запускать можно (fork-бомба: вы завилсните)

Вот такой вот смайлик ;)

helios ★★★★★
()
Ответ на: комментарий от A-T-R

> Спасибо , будем стараться . Учиться учиться и ещё раз учиться , как завещал нам дедушка Ленин.

Учись, только не у этого профана :)

anonymous
()
Ответ на: комментарий от anonymous

Малыш, ложись спать, завтра тебе с утра ягу с одноклассниками в подъезде нужно пить, а ты тут испускаешь газы и спать не ложишься. Детское время то кончилось.

tia
()
Ответ на: комментарий от anonymous

Учись, только не у этого профана :)

Как мне это до жути нравится... Вспоминается курс перла, где каждый пук имел контекст и умолчание.

Скорми вы мне такое a.read().split(), я бы немного прифигел и решил перебраться на что-то понятнее. Пока человеку не известны умолчания, стоит писать в режиме К.О.

helios ★★★★★
()
Ответ на: комментарий от tia

> Малыш, ложись спать, завтра тебе с утра ягу с одноклассниками в подъезде нужно пить, а ты тут испускаешь газы и спать не ложишься. Детское время то кончилось.

Ну так человек не местный, он не в курсе, что ты - местный клоун и в серьез тебя тут никто не воспринимает после твоих отжигов :)

anonymous
()
Ответ на: комментарий от helios

> Скорми вы мне такое a.read().split(), я бы немного прифигел и решил перебраться на что-то понятнее.

Ну тут его тиа еще и лямбдами с мапом кормит, это уж точно человек поймет.

anonymous
()
Ответ на: комментарий от helios

> Пока человеку не известны умолчания, стоит писать в режиме К.О.

split() разделяет на слова, все. Это не так уж сложно понять.

anonymous
()
Ответ на: комментарий от anonymous

Ну тут его тиа еще и лямбдами с мапом кормит, это уж точно человек поймет.

Хм этот пост я не видел. Тут конечно ни о каком обучении речь идти не может, ибо при попытке это сразу скушать, память уйдёт в ноль и человек лучше на форте будет фортить... А питон вспоминать как страшный сон.

split() разделяет на слова, все. Это не так уж сложно понять.

Так оно, но без аргументов получается, что раздели хоть что по хоть чему :)

И да, по сравнению с лямда+мап - это мелкое хулиганство ^_^

helios ★★★★★
()
Ответ на: комментарий от tia

>map

lambda

а вот и лисперы подтянулись, это сразу заметно по лишним скобочкам :D

antony986
()
Ответ на: комментарий от helios

С a.read().split() все норма , split нашел в инете , так что эта строка мне понятна . А вот с понятиями лямда и мап знаком только из высшей математики , а с реализацией в питоне , сегодня буду разбираться.

A-T-R
() автор топика
Ответ на: комментарий от helios

Перл клёвый, только сколько недель надо курить его что овладеть на должном уровне?

tensai_cirno ★★★★★
()
Ответ на: комментарий от A-T-R

> А вот с понятиями лямда и мап знаком только из высшей математики

Они не из высшей математики.

anonymous
()
Ответ на: комментарий от tia

Это Perl...
Это хорошо что ты этим интересуешся

Да это был сарказм :)

Кста, небольшая замануха:

Да, ещё мне понравилась одна древняя статья «самые интересные недокументированные функции пёрла». Надо, кстати её найти. Иногда такого не хватает пайтону, хотя оно против его идеологии, да и не всегда оно нужно. Что-то такое вот будет на пайтоне: while(True): eval(raw_input());

Хотя, думаю, можно короче.

Такое на питоне будет просто #>python :)

nanoo_linux
()
Ответ на: комментарий от anonymous

ну фиг его знает , у нас дохрена предметов связанных с информатикой , математикой и прочим ... ведут их несколько преподавателей , тема урока не всегда оглашается , да и пишем в блоке . помню что то то подобное проходили ,а больше всего у нас по расписанию как раз уроков вышки , на которой мы чего только не изучаем. Извиняюсь что напутал.

A-T-R
() автор топика
Ответ на: комментарий от nanoo_linux

man ulimit

Не удивил. Пользователи оное юзают?

Перл клёвый, только сколько недель надо курить его что овладеть на должном уровне?

Много. Есть даже шутка по этому поводу «зайти в $PERL_GEEK_LOCATION и скажи, что ты знаешь Perl», как бы намекающая на то, что полностью перл знать невозможно. Это вполне можно считать за правду, учитывая монструозный CPAN.

Вообше, курить его легко, если «цепанёт». Ну и ещё раз повторюсь, потом вас уже будет трудно переманить на что-то другое...

Лёгкое чтиво на тему перл: «Осторожно, Perl!», Перевод brian’s_guide.pod, Песня «Perl 5, in a Nutshell».

Эти произведения хорошо характеризуют дух Perl.

Ну и есть одна очень соблазнительная возможность в перл - написать свой код «красиво»: Perl Geek Art

И картинка... Короче, творчества про перл очень много!

helios ★★★★★
()
Ответ на: комментарий от anonymous

Местный клоун у нас ты, глупышка. Даже не думай регистрироваться, ибо опять анонимным быстро станешь.
Ты думаешь что анонимуса кто-то воспринимает всерьёз? Глупенький, ты своей анонимной попой и плясками только доказываешь что являешься клоуном, который боится что его забанят или уже забанили. В общем, сиди, идиотинка, и молчи.

tia
()
Ответ на: комментарий от anonymous

Глупый. Такое определение дал... Ты, видимо, сам ничего не знаешь, а пытаешься здесь что-то высказать.

Ну тут его тиа еще и лямбдами с мапом кормит, это уж точно человек поймет.

Это так, был вариант №2. Не было сказано в начале треда что человек ещё не изучил базовые части пайтона(в которые входит и функциональщина).

а вот и лисперы подтянулись, это сразу заметно по лишним скобочкам :D

Ни сколько не лисперы. Функциональщина есть и за пределами лиспа/хаскеля.

tia
()
Ответ на: комментарий от helios

> Вообше, курить его легко, если «цепанёт». Ну и ещё раз повторюсь, потом вас уже будет трудно переманить на что-то другое...

Это было так до широкого распространения питоно-рубей. Да и тогда полезней было бы Tcl курить. У меня к Перлу со временем отношение менялось вот так: необходимость -> заинтересованность -> восхищение -> необходимость -> отвращение. Язык кривой до безобразия, с опытом начинаешь это всё больше осознавать.

Hjorn
()
Ответ на: комментарий от Hjorn

необходимость -> заинтересованность -> восхищение -> необходимость -> отвращение

Примерно тоже самое, но после восшищения у меня был фанатизм... Самый натуральный. Писал на перл ВСЁ. Людей, что советовали использовать более человечный язык - игнорировал.

Так было написано несколько проектов (консольные прилаги). Свой сайт был написан на перл... Потом прилетела задачка, об которую я убился: тупо зарылся в своих извращениях. Задачка была вебовская, поэтому всё было в спешном порядке переписано на пых (первое, что пришло в голову). Тут пришло озарение: смысл программирования не в кайфе от извратов, а в кайфе от результата...

Кстати, сейчас ушёл на питон. Пока устраивает.

Отврашения я так и не достиг и считаю, что каждому следует для общего развития попытаться понять перл. Для более-менее больших проектов он непригоден.

helios ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.