
Aleshka
09.06.2016
19:04:00
Кто подскажет в чем проблема
Пытаюсь переписать достаточно объемный код со второго питона на третий, несколько мест поправил, теперь вылезает ошибка
DeprecationWarning: 'U' mode is deprecated
делаю все это в jupyter notebook

Zart
09.06.2016
19:04:24
это про флаг U для open()

Aleshka
09.06.2016
19:04:53
можно поподробнее? я новичок, хз что это значит

Google

Zart
09.06.2016
19:05:12
новичок, но портирует кучу кода с 2 на 3? это как?

Aleshka
09.06.2016
19:06:04
ну вот так, я для себя, вообще у меня оба питона стоят, но бесит переключаться каждый раз чтобы юзать этот код, сам пишу на третьем, вот решил переписать

Andrey
09.06.2016
19:06:38

Zart
09.06.2016
19:06:50
https://docs.python.org/2/library/functions.html#open
когда функции open передан флажок U, то включается универсальная обработка переводов строк
полагаю достаточно выкинуть U во всех случаях

Aleshka
09.06.2016
19:08:02
f = open(filepath,'w')

Zart
09.06.2016
19:08:14
это на запись

Aleshka
09.06.2016
19:08:18
а вот чет похожее
f = open(filepath, 'rU')

Zart
09.06.2016
19:08:23
U только для чтения работает
вот. поменяй 'rU' на 'r'

Aleshka
09.06.2016
19:09:25
спасибо, помогло

Google

Aleshka
09.06.2016
19:35:30
Чет не пойму как это работает,
TypeError: Can't convert 'bytes' object to str implicitly
указывает на
data = np.genfromtxt(StringIO('\n'.join([line[:-2] for line in data_only_lines])), delimiter = delimiter, missing_values = '', filling_values = None)
суть ошибки понял
не понял как поправить, знаю что в третьем питоне StringIO больше нет, но его можно импортировать из io
декодинг не помогает
то, что помогает чувакам на stackowerflow не помогает мне
)

Zart
09.06.2016
20:02:51
твой новый код возвращает байты, а ты пытаешься либо распечатать либо свести со строками
общего решения нет, надо понимать где какой тип и приводить

Марк
09.06.2016
20:47:04
И так, господа, вернемся, к предмету, от которого у меня пердак перманентно горит
Допустим, что ()[] - это петонвей
Допустим

Zart
09.06.2016
20:47:38
тред закрыт

Марк
09.06.2016
20:48:03
Допустим, что это логичный и разумный шаг
Хорошо.

Aleshka
09.06.2016
20:48:22
скажите че за петонвей

Марк
09.06.2016
20:49:09
Где предсказуемость? То есть, где такую же конструкцию я могу спрогнозировать?

Zart
09.06.2016
20:49:43
ты всё еще продолжаешь не понимать что нет никакой конструкции ()[]
поэтому объяснять чтото дальше бессмысленно

Марк
09.06.2016
20:50:14
Я понимаю, о чем ты, но для удобства пишу про конструкцию
То есть, попробую сформулировать вопрос иначе и точнее: в каких функциях можно писать [] следом?

Google

Zart
09.06.2016
20:52:34
f() - здесь скобки - это вызов функции
() - здесь скобки - литерал для пустого тупла
(1+1) и (1, 1) - здесь скобки являются частью выражения, для задания приоритетов вычислений
[] - литерал для пустого списка
x[0] - доступ к элементам сиквенса/маппинга
[... for ... in ...] - лист компрехеншен
a = f()
b = a[123]
эквивалентно b = f()[123]

Janek
09.06.2016
20:54:00
Ну и чо непонятно?
Даже до мня дошло

Zart
09.06.2016
20:54:29
писать следом можешь всегда и везде, бля. если скобки - это вызов функции - то если она возвращает сиквенс или маппинг
если в скобках сиквенс или маппинг - то квадратными скобками после этого мы получаем доступ к значению внутри
{1: 2}[1] - это мы дергаем из дикта значение по ключу
[1, 2, 3][2] - дергаем значение из списка по индексу
(1, 2, 3)[2] - абсолютно то же самое, но из тупла
это всё комбинации двух вещей - чего-либо до, и взятия элемента после

Марк
09.06.2016
20:56:05
---> 1 re.search('\d',10)[0]
/usr/lib/python2.7/re.pyc in search(pattern, string, flags)
140 """Scan through string looking for a match to the pattern, returning
141 a match object, or None if no match was found."""
--> 142 return _compile(pattern, flags).search(string)
143
144 def sub(pattern, repl, string, count=0, flags=0):
TypeError: expected string or buffer

Zart
09.06.2016
20:56:06
если ты и этого не понимаешь до сих пор, то я хз...

Марк
09.06.2016
20:56:17
Шота не работает "всегда и везде"

Zart
09.06.2016
20:56:25
ты дятел

Zart
09.06.2016
20:56:36
второй аргумент re.search хавает строки, а ты скормил целое
вот он и матерится что ждёт строку
до [0] там даже не дошло

Марк
09.06.2016
20:57:18
In [53]: re.search('\d','10')[0]
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/home/devel/dev_python/<ipython-input-53-06385d43dee4> in <module>()
----> 1 re.search('\d','10')[0]
TypeError: '_sre.SRE_Match' object has no attribute '__getitem__'

Zart
09.06.2016
20:57:46
потому что re.search не возвращает секвенса/маппинга или объекта с их интерфейсом

Omni
09.06.2016
20:58:17
Не пойму, о чём вы спорите. Можно ли делать ((1,2),(3,4))[0][1] или низзя?

Zart
09.06.2016
20:58:21
все эти случаи реализованы через метод __getitem__, которого в этом случае нет

Марк
09.06.2016
20:58:27

Google

Zart
09.06.2016
20:58:28
я не знаю что он курит

Janek
09.06.2016
20:59:14
Можно

Марк
09.06.2016
20:59:20

Janek
09.06.2016
20:59:33

Zart
09.06.2016
20:59:38
писать можешь везде где хочешь
свободная страна нах

Omni
09.06.2016
20:59:47
Можно
Понятное дело. Я просто не пойму, о чём спор

Zart
09.06.2016
20:59:52
но я не утверждал что это будет работать

Admin
ERROR: S client not available

Марк
09.06.2016
21:00:16
? Не, Зарт, это подлый слив

Zart
09.06.2016
21:00:23
слив чего?

Janek
09.06.2016
21:00:32
Аутизм какой-то

Zart
09.06.2016
21:00:39
вот даже ре.сёрч свой возьми

Janek
09.06.2016
21:00:40
Спор вообще не понимаю о чем

Zart
09.06.2016
21:00:53
он возвращает либо sre.Match, либо None

Janek
09.06.2016
21:01:16
Аж грустно стало
Спокойной ночи. Пацы

Zart
09.06.2016
21:01:47
поэтому re.search(...).groups(0) писать можно, но тогда будут исключения на попытках брать аттрибут groups у None, если матча нет

Марк
09.06.2016
21:02:21
Вот берем абстрактную фунцию в пайтоне. Как по ней я могу угадать, могу ли я юзать после [] или нет?

Zart
09.06.2016
21:02:28
не можешь

Google

Janek
09.06.2016
21:02:49
На возврат функции смори

Zart
09.06.2016
21:02:51
только при условии что оно вернет объект с нужным протоколом
но вот большинство функций имеет вполне заранее известные типы возвращаемых значений

Марк
09.06.2016
21:05:00

Zart
09.06.2016
21:05:19
ты сам сказал про функцию
[...] ты применяешь к тому что она вернет

Марк
09.06.2016
21:05:55
секундочку

Zart
09.06.2016
21:06:05
f()[...] - это обычное выражение, вычисляется слева-направо
т.е. сперва f(), потом результат сабскриптится

Марк
09.06.2016
21:06:48
In [56]: (lambda x:x)[10]
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/home/devel/dev_python/<ipython-input-56-9bd98792864b> in <module>()
----> 1 (lambda x:x)[10]
TypeError: 'function' object has no attribute '__getitem__'
In [57]: (lambda x:x)(10)
Out[57]: 10
In [58]: (lambda x:x)[10]
Не едут лыжи так.

Zart
09.06.2016
21:07:18
(lambda x:x) - это ты создал функцию, в скобочках
но не вызвал
у самой функции нет подэлементов, не пашет [] на ней
почему до тебя очевидное всё еще не дошло?

Марк
09.06.2016
21:10:30
Почему передача аргумента пашет?

Zart
09.06.2016
21:11:40
(10) - это ты вызываешь созданную лямбду

Марк
09.06.2016
21:12:12
Это разве не передача аргумента?

Zart
09.06.2016
21:12:19
[10] - пытаешься извлечь 10й элемент. из лямбды....
нет

Марк
09.06.2016
21:12:43
In [60]: a = lambda x:x[10]
Вот так лыжи едут. Ток непоняно, что происходит
Эта группа больше не существует