python 输入中文_Python 2.7中使用raw_input输入中文时的编码转换-程序员宅基地

技术标签: python 输入中文  

python中常用的交互命令是raw_input,在写脚本时可能会经常用到。他的使用方法比较简单,不清楚的可以参考:http://www.pythonclub.org/python-basic/raw-input 。今天博主在调用图灵机器人的api时被要求输入中文,如果没有经过编码处理,api就会不认得输入的是什么内容。

python-raw_input-20151020-1.jpg

那么如何把raw_input输入的字符转成utf-8编码格式?python中可以使用decode和encode两个方法。先decode把str转成Unicode格式,然后encode把Unicode编成要求的字符串 。

decode用法:str  -> decode('the_coding_of_str') -> unicode

encode用法:unicode -> encode('the_coding_you_want') -> str

字符串是Unicode经过编码后的字节组成。decode时需要知道输入的编码格式,如果格式不对python会抛出错误,类似如下。

>>> s.decode('utf-8')

Traceback (most recent call last):

File "", line 1, in

File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode

return codecs.utf_8_decode(input, errors, True)

UnicodeDecodeError: 'utf8' codec can't decode byte 0xd6 in position 0: invalid continuation byte

python 2.7中可以使用sys和locale两个模块自动识别字符串的编码。修改后的代码如下所示。

python-raw_input-20151020-2.jpg

这样Python 2.7中使用raw_input输入中文时的编码转换问题应该就解决了。如果想要raw_input输入提示符也是中文,那么一样的思路,上面raw_input一行可以改成这样。

info=raw_input(u'提问:'.encode('gb18030')).decode(sys.stdin.encoding or locale.getpreferredencoding(True))

参考连接:http://wklken.me/posts/2013/08/31/python-extra-coding-intro.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39847437/article/details/110036117

智能推荐

Android 12.0 SystemUI下拉状态栏定制化之隐藏下拉通知栏布局功能实现(二)_android12定制下拉快捷栏-程序员宅基地

文章浏览阅读606次。在12.0的系统定制化开发中,由于从12.0开始SystemUI下拉状态栏和11.0的变化比较大,所以可以说需要从新分析相关的SystemUI的布局,然后做分析来实现不同的功能,今天就开始实现关于隐藏SystemUI下拉状态栏中的通知栏布局系列二,去掉下拉状态栏中 通知栏部分白色的圆角背景_android12定制下拉快捷栏

原型和原型链详解_介绍下原型和原型链?-程序员宅基地

文章浏览阅读5.8k次,点赞11次,收藏44次。原型和原型链怎么来的?1994年,网景公司(Netscape)发布了Navigator浏览器0.9版,但是刚开始的Js没有继承机制,更别提像同时期兴盛的C++和Java这样拥有面向对象的概念。在实际的开发过程中,构造函数内部的属性方法,每次new一个实例对象的时候,都会创建内部的这些属性和方法,并且不同的实例对象之间,不能共享这些方法,造成了资源的浪费。工程师们发现没有继承机制很难解决一些问题,必须有一种机制能将所有的对象关联起来。于是有了原型这个概念。Brendan Eich鉴于以上情况,但不想把_介绍下原型和原型链?

数据结构与算法--递归(factorial)_factorial在c语言中有什么用-程序员宅基地

文章浏览阅读2.2k次。计算阶乘的递归代码如下:#include <stdio.h>#define FUNCTION_TRUE 1#define FUNCTION_FALSE 0void print_loop(void);long factorial(int n);long iterative_factorial(int n);int main(void){ int a = 3; long result = 0; //print_loop();#if FUNC..._factorial在c语言中有什么用

Linux学习必备基础知识_链接程序,共同完成任务-程序员宅基地

文章浏览阅读255次。1. 计算机的功能及组成_链接程序,共同完成任务

Java并发编程实例--4.控制线程打断_如何打断等待的线程-程序员宅基地

文章浏览阅读664次。Java提供了InterruptedException异常,当我们检测到线程被打断时可以抛出并在run()方法中进行捕捉。本例中,我们将开发一个程序以实现根据文件名称在指定文件夹(包括其子目录)中搜索它。以此来介绍如何使用InterruptedException异常。FileSearch.java package com.dylan.thread.ch1.c04;import java...._如何打断等待的线程

SEC公开不予上市加密货币ETF的原因-程序员宅基地

文章浏览阅读557次。点击上方“蓝色字”可关注我们!暴走时评:日前,美国证券交易委员会(SEC)公开发表信函说明不予批准加密货币交易所交易基金(ETF)上市的原因,概述了对加密货币存在的五点担忧。据信函内容显示,该机构担忧的问题主要集中在以下五点:估值、流动性、托管、套利和可能存在的市场操纵。因此,此前提交ETF申请的公司已有部分撤回了申请。因此在上述问题得到圆满解决之前,SEC可能还是不会批准比特币ETF的上市申请。

随便推点

pytorch:RuntimeError: CUDA error: CUBLAS_STATUS_ALLOC_FAILED when calling `cublasCreate(handle)`_pytorch cublas_status_alloc_failed when calling `c-程序员宅基地

文章浏览阅读2.9w次,点赞19次,收藏16次。pytorch出现报错:RuntimeError: CUDA error: CUBLAS_STATUS_ALLOC_FAILED when calling cublasCreate(handle)将batch_size改小一点即可我之前的batch_size = 32,改为batch_size = 8程序跑成功了。出现上述问题的原因:1.网络过于复杂(深)2.电脑性能不行..._pytorch cublas_status_alloc_failed when calling `cublascreate(handle)

scala中的特质_scala success特质-程序员宅基地

文章浏览阅读2k次。scala中的特质1.特质中定义的方法可以实现,【有了大括号的就是已经实现过的方法,例如下面Animal中的listen和run】;也可以不实现【例如Animal类中的speak方法】示例代码如下:package cookBook.chapter8trait Animal{ //没有实现 def speak def listen: Unit ={ } ..._scala success特质

SQL语句练习题目-程序员宅基地

文章浏览阅读875次。sql语句练习题目员工信息表 staff: user_id , name, store_id, salary商店表store:store_id, name,city题目1:找出平均工资小于5000的商店所在的城市SELECT a.ctity,AVG(b.salary) FROM store a,staff bWHERE a.store_id=b.store_idG...

HTML期末作业:基于html+css+javascript+jquery实现古诗词网页 学生网页设计作品 web前端开发技术 web课程设计 网页规划与设计-程序员宅基地

文章浏览阅读198次。 关于作者: 历任研发工程师,技术组长,教学总监;曾于2016年、2020年两度荣获CSDN年度十大博客之星。 十载寒冰,难凉热血;多年过去,历经变迁,物是人非。 然而,对于技术的探索和追求从未停歇。 坚持原创,热衷分享,初心未改,继往开来!茶文化网站、️‍中华传统文化题材、京剧文化水墨风书画、中国民间年画文化艺术网站 、等网站的设计与制作。️ 这个首页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒

图像直方图均衡化和局部增强处理_基于直方图的局部增强-程序员宅基地

文章浏览阅读1.9w次,点赞15次,收藏123次。一、基本原理1.1直方图均衡化(一提高图像的对比度,二使像素值几乎成均匀分布的图像0表示黑,1表示白,中心思想是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布,增加许多图像的局部对比度,亮度可以更好的在直方图上分布。) 灰度级的直方图就是反映一幅图像中的灰度级与出现这种灰度的概率之间的关系的图形。设变量代表图像中的像素灰度级。在图像中,像素的灰度级可作归一化处理..._基于直方图的局部增强

echarts饼状图圆环位置修改样式调整_echarts环形图位置-程序员宅基地

文章浏览阅读5k次。作为笔记(echarts篇)pie图例组件:legend: { type: 'scroll',//图例数量过多时,可以使用滚动 left: 'center', bottom: this.ringData.legendBottom || 0,//设置位置 data: this.ringData.name, textStyle: { color: '#fff'//..._echarts环形图位置

推荐文章

热门文章

相关标签