Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 18, 2010 00:01:54

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

Python ругается на русский язык

Уважаемые питонеры, помогите, пожалуйста, решить следующую проблему: есть переменная mypath в которую с помощью raw_input передается строка пути типа ‘/home/user/Документы/программирование’, содержащая русские буквы. Проблема в том, что содержимое данной переменной имеет вид “'/home/user/\xd0\x94\xd0\xbe\xd0\xba\xd1\x83\xd0\xbc\xd0\xb5\xd0\xbd\xd1\x82\xd1\x8b/\xd0\xbf\xd1\x80\xd0\xbe\xd0\xb3\xd1\x80\xd0\xb0\xd0\xbc\xd0\xbc\xd0\xb8\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5'”. Вопрос: как сделать так, что бы содержимое переменной имело нормальный вид, т.е. такой, какой был введен ('/home/user/Документы/программирование')?



Офлайн

#2 Фев. 18, 2010 00:14:08

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

Python ругается на русский язык

в заголовке скрипта написал:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

Файл сохранет в utf-8 кодировке.
В чем же дело?



Офлайн

#3 Фев. 18, 2010 22:33:47

bazooka
От:
Зарегистрирован: 2009-04-12
Сообщения: 165
Репутация: +  0  -
Профиль   Отправить e-mail  

Python ругается на русский язык

>>> a = ‘\xd0\xb5’
>>> print a
е
>>> a
'\xd0\xb5'
>>> print repr(a)
'\xd0\xb5'
>>> print str(a)
е
>>> str(a) == repr(a)
False



Офлайн

#4 Фев. 19, 2010 02:30:15

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

Python ругается на русский язык

bazooka, так можно на Питоне и объяснить, почему Земля вертится)))



Офлайн

#5 Фев. 22, 2010 00:29:41

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

Python ругается на русский язык

bazooka вот что у меня получилось:
>>> mypath = repr(raw_input('введите путь: ‘))
введите путь: ’/home/user/Документы/программирование'
>>> mypath
'“\\t\'/home/user/\\xd0\\x94\\xd0\\xbe\\xd0\\xba\\xd1\\x83\\xd0\\xbc\\xd0\\xb5\\xd0\\xbd\\xd1\\x82\\xd1\\x8b/\\xd0\\xbf\\xd1\\x80\\xd0\\xbe\\xd0\\xb3\\xd1\\x80\\xd0\\xb0\\xd0\\xbc\\xd0\\xbc\\xd0\\xb8\\xd1\\x80\\xd0\\xbe\\xd0\\xb2\\xd0\\xb0\\xd0\\xbd\\xd0\\xb8\\xd0\\xb5\'”'



Офлайн

#6 Фев. 22, 2010 00:48:34

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Python ругается на русский язык

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

Офлайн

#7 Фев. 22, 2010 01:02:46

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

Python ругается на русский язык

когда я пытаюсь сделать так:
>>> mypath = str(raw_input('введите путь: ‘))
введите путь: ’/mnt/win_d/Программирование/Python'
>>> f=os.listdir(mypath)

он мне выдает вместо списка файлов в директории следующую ошибку:

Traceback (most recent call last):
File “<pyshell#3>”, line 1, in <module>
f=os.listdir(mypath)
OSError: No such file or directory: “'/mnt/win_d/\xd0\x9f\xd1\x80\xd0\xbe\xd0\xb3\xd1\x80\xd0\xb0\xd0\xbc\xd0\xbc\xd0\xb8\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5/Python'”



Офлайн

#8 Фев. 22, 2010 01:19:24

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

Python ругается на русский язык

как сделать, что бы он все таки воспринимал mypath как ‘/mnt/win_d/Программирование/Python’, а не как “'/mnt/win_d/\xd0\x9f\xd1\x80\xd0\xbe\xd0\xb3\xd1\x80\xd0\xb0\xd0\xbc\xd0\xbc\xd0\xb8\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5/Python'”?



Офлайн

#9 Фев. 22, 2010 07:33:37

.Serj.
От:
Зарегистрирован: 2008-09-27
Сообщения: 181
Репутация: +  0  -
Профиль   Отправить e-mail  

Python ругается на русский язык

Не надо было преобразовывать введённый путь в строку:

In [1]: import os

In [2]: mypath = raw_input('введите путь:')
введите путь:/home/serj/Документы/

In [3]: f = os.listdir(mypath)

In [4]: print f
------> print(f)
['LaTeX', 'MetaPost', 'ConTeXt',
'\xd1\x82\xd0\xb5\xd1\x85\xd0\xbf\xd0\xbe\xd0\xb4\xd0\xb4\xd0\xb5\xd1\x80\xd0\xb6\xd0\xba\xd0\xb0',
'svn-book.pdf', 'i808x', '.directory', 'HIG', 'post', 'ProgLang', 'Inventory', 'PCB & schematic', 'scrapbook',
'\xd0\xa2\xd0\xa3\xd0\xa1\xd0\xa3\xd0\xa0', 'Bacula', 'manual_reference.pdf', 'DSCN3618.JPG',
'\xd0\xa0\xd0\xb0\xd1\x81\xd0\xbf\xd0\xb8\xd1\x81\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5', 'Lin', 'Web',
'Word 2007 \xd0\xb4\xd0\xbb\xd1\x8f \xd0\xbc\xd0\xb0\xd1\x82\xd0\xb5\xd0\xbc\xd0\xb0\xd1\x82\xd0\xb8\xd0\xba\xd0\xb0.pdf',
'paper-street-performer.pdf', '3D graphics', 'DSCN3617.JPG', 'typography.janson-syntax.107514.pdf', 'fract.ps']



Отредактировано (Фев. 22, 2010 07:34:42)

Офлайн

#10 Фев. 22, 2010 11:54:22

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

Python ругается на русский язык

все, получилось :))) Всем большое спасибо!



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version