Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > методы строк


Автор: sdsdsdsd 16.2.2009, 20:45
print  "  dfdfds,sdf,sdf.sdm,s  ".strip().split(",")
все работает, все хорошо. но как быть если я захочу добавить "\n".join() ?
Возможно ли уменьшить код т.е. сделать более эффективно?
Спасибо.

Автор: sdsdsdsd 16.2.2009, 21:16
print  "\n".join("  dfdfds,sdf,sdf.sdm,s  ".strip().split(","))
Я сделал так. Есть другие варианты?

Автор: alex_smirnov 16.2.2009, 21:56
Наверно так будет эффективнее:

Код

s = "  dfdfds,sdf,sdf.sdm,s  "
print s.strip().replace(',', '\n')

Автор: sdsdsdsd 17.2.2009, 20:14
Код

f = open("1.txt", "r")
g = f.readline()
print "\n".join(g.strip().split(",")).replace(" ","")


1.txt
Код
 dfdf, dfdd,,df.df,df 


Результат:
dfdf
dfdd

df.df
df

Не могу понять как справится с этими ,, ведь они все портят(с новой строки). Как быть?
Существуют ли способы  что бы измерить время выполнения кода? Что бы выбрать оптимальный.
Делаю print g[2], понятное дело что в ответ я получу f. Когда хотелось бы dfdd т.е. мне теперь нужно сделать g['dfdf','dfdd','df.df','df'], как добиться?
ЗЫ дико раздражает g = f.readline() которое стоит в одиночку, но так и не смог от этого избавиться.

Автор: alex_smirnov 18.2.2009, 01:20
Опишите четкие правила, по которым хотите форматировать текст, а то так гадать можно сколько угодно.

И откуда манера писать больше трех вызовов методов в одной строке? smile

Автор: sdsdsdsd 18.2.2009, 01:32
Т.к. я только изучая то четкой задачи нет. 
Допустим мой пример выше, взять строку (из файла) и обработать её. Убрать пробелы(почти получилось), разбить на нужные промежутки с возможностью их вызова. Строку я смог отформатировать как мне нужно(с ,, не разобрался), но вот как теперь каждый фрагмент вызвать, по поему замыслу на print g[2] я должен видеть df.df.
Ну мне кажется так выглядить аккуратно и компактно. Я поэтому пытаюсь все сократить. Не верное решение?
ЗЫ сорри за терминологию. может быть лучше обсудить в личных сообщениях? Спасибо за помощь.

Автор: Fenrir13 18.2.2009, 07:25
Если нужно из строки "слов", беспорядочно разделённых запятыми, получить аккуратный массив, тогда так:
Код

filtered = [item.strip() for item in original.split(",") if item.strip()]

Это без оглядок на оптимальность.

Автор: _Viper_ 19.2.2009, 17:44
Цитата(sdsdsdsd @  17.2.2009,  20:14 Найти цитируемый пост)
Существуют ли способы  что бы измерить время выполнения кода? Что бы выбрать оптимальный.
 Модуль profile.

Цитата(sdsdsdsd @  17.2.2009,  20:14 Найти цитируемый пост)
ЗЫ дико раздражает g = f.readline() которое стоит в одиночку, но так и не смог от этого избавиться.
Если нужна только первая строка из файла то можно так: g = open("1.txt", "r").readline()

Автор: EDELWEISS 24.3.2009, 09:51
 print  "  dfdfds,sdf,sdf.sdm,s  ".strip().split(","),+"\n".join()

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)