pythoninnutshell(PythonString和PyQtQString的区别)

1.Python String和PyQt QString的区别

以下在python2.5和PyQt4.4.6 for python2.5环境下讨论。

在python中有两种与字符有关的类型:string object和Unicode object。平时进行输入输出的一般都用stringobject,当需要显示一些特殊字符或者中文等文字时候,需要转换为Unicode编码。

在PyQt中也有两种字符类型与上面两者对应:QByteArray和QString,主要是使用QString操作数据。1) python stringobject可以理解为一个接一个字节的字节组,至于表示什么编码,与表示文字有关,比如“pythonstring”,“中文”。

注意它是有不同编码区分的。PyQt中与之对应的是QbyteArray,而不是Qstring。

A built-in string object (plain or Unicode) is a sequence ofcharacters used to store and represent text-based information(plain strings are also sometimes used to store and representarbitrary sequences of binary bytes). (摘自《Python in aNutShell》)QByteArray can be used to store both raw bytes (including '"0's)and traditional 8-bit '"0'-terminated.(摘自《PyQt手册》)2)Python Unicodeobject可以理解为固定使用utf-16编码的字节组,其中英文和中文都使用两个字节(16位)来表示,如:u"PythonUnicode object"、u"中文"。PyQt中与之对应的就是QString了。

Unicode string literals have the same syntax as other stringliterals, with a u or U immediately before the leading quote.(摘自《Python in a NutShell》)Qt also provides the QString class to store string data. It stores16-bit Unicode characters, making it easy to storenon-ASCII/non-Latin-1 characters in yourapplication.(摘自《PyQt手册》)QString stores a string of 16-bit QChars, where each QCharcorresponds one Unicode 4.0 character.(摘自《PyQt手册》)2 PyQt内部类型转换QString有toAscii()、toUtf8()函数转换为QByteArray类型,(这个基本不用,因为很少直接用QByteArray类型)有__init__(self, QByteArray a)函数将QByteArray类型转为QString。3. Python string object和Python Unicode object相互转换1)Python string object是原始编码是有区分的,通过 decode('原始编码')函数解码得到通用utf16编码即Python Unicode object。

>>>"pythonstring".decode('ascii')或者>>>"pythonstring".decode()得到 u"python string"因为默认按ascii解码。>>>"中文".decode('gbk')得到 u""u4e2d"u6587" ,打印出来就是 中文 二字。

(注意结果是2字节一组,共两组,对应两个汉字)又:"python string".decode('gkb') ,即按汉字来解码,也可以得到 u"pythonstring",因为gbk编码也支持英文字母;但是"中文".decode('ascii') 即按ascii解码是错误的,因为ascii编码不支持汉字!>>>"dfdf".decode()u'dfdf'>>>"dfdf".decode("ascii")u'dfdf'>>>"dfdf".decode("gbk")u'dfdf'>>>"中文".decode("gbk")u'"u4e2d"u6587'>>>print"中文".decode("gbk")中文>>>"中文".decode("gb2312")u'"u4e2d"u6587'>>>"中文".decode("ascii")Traceback (most recent call last):File "", line 1,in UnicodeDecodeError: 'ascii' codec can't decode byte 0xd6 inposition 0: ordinal not in range(128)2)Python Unicode object原始编码固定是utf16,通过 encode('目的编码') 编码来得到Pythonstring object。>>>u"unicodestring".encode()或者>>>u"unicodestring".encode('ascii')得到'unicode string',默认目的编码为ascii。

>>>u"中文".encode("gbk")得到'"xd4"xd0"xce"xc4',打印出来就是 中文。(注意结果是1字节一组,共4组)>>>u"sdff".encode()'sdff'>>>u"sdff".encode('ascii')'sdff'>>>u"sdff".encode('gbk')'sdff'>>>u"sdff".encode('gb2312')'sdff'>>>u"中文".encode('gbk')'"xd6"xd0"xce"xc4'>>> printu"中文".encode('gbk')中文>>>u"中文".encode('ascii')Traceback (most recent call last):File "", line 1, inUnicodeEncodeError: 'ascii' codec can't encode characters inposition 0-1: ordinal not in range(128)注意:执行>>>u"中文".encode('gbk')命令需要你的IDE支持gbk编码,在官方shell下执行肯定没问题,但如果你的IDE比如PyWin中文输入异常,则可能报错。

4. Python string object和Python Unicode object向QString的转换。Qt一般不直接操作QByteArray,只需关注Python string object和Python Unicodeobject向QString的转换。

很多关于PyQt4的英文书籍说:PyQt函数需要QString参数的地方都可以直接用Python stringobject或者Python Unicode object,如果非要转换可以直接用QtCore.QString()构造。比如《GUIProgramming with PyQt》,再如《PyQt手册》:Whenever PyQt expects a QString as a function argument, a Pythonstring object or a Python Unicode object can be provided instead,and PyQt will do the necessary conversion automatically.You may also manually convert Python string and Unicode objects toQString instances by using the QString constructor as demonstratedin the following code fragment:qs1 = QtCore.QString("Converted 。

2.python中的for i in range怎么用

python for i in range是用来for循环遍历的。python中range 是个函数,range() 函数可创建一个整数列表,python中用来在for循环中遍历。

用法如: for i in range (1,3)。语法格式:range(start, stop[, step]),分别是起始、终止和步长。

range()函数返回的对象的行为都很像一个列表,但是它确实不是一个列表,它只是在循环迭代的情况下返回指定索引的值,但是它并不会在内存中真正产生一个列表对象,这样也是为了节约内存空间。实际用法分以下几种情况:

1. for in range(3)即:从0到3,不包含3,即0,1,2。

2.for in range(1,3) 即:从1到3,不包含3,即1,2。

3.for in range(1,3,2)即:从1到3,每次增加2,因为1+2=3,所以输出只有1

第三个数字2是代表步长。如果不设置,就是默认步长为1。

3.python enumerate跟直接in有什么区别

两个区别很明显:

#enumerate

1

2

3

4

5

defenumerate(sequence, start=0):

n =start

forelem insequence:

yieldn, elem

n +=1

首先看enumerate返回的是个iterator

in的话参考文档:(下面摘录)

#in

#not-in (翻译)

对于定义了__contains__()方法的用户自定义类,x in y为真当且仅当y.__contains__(x)为真。

对于没有定义__contains__()但定义__iter__()的用户自定义类,x in y为真如果某个值z在迭代y时满足x == z。 如果迭代过程中抛出异常,就好像是in抛出那个异常一样。

最后,尝试旧式的迭代协议:如果一个类定义了__getitem__(),x in y为真当且仅当有一个非负的整数索引i使得x == y[i], 且更小的索引不会引发IndexError异常。(如果引发了其它异常,则像是in引发了该异常)。

not in操作符定义为取与in相反的真值。

4.请问如何用Python turtle画一个多角星

一般是要靠算角度的

import turtle

import time

turtle.forward(100)

turtle.right(144)

time.sleep(1)

turtle.forward(100)

turtle.right(144)

time.sleep(1)

turtle.forward(100)

turtle.right(144)

turtle.forward(100)

time.sleep(1)

turtle.right(144)

turtle.forward(100)

time.sleep(3)

你可以写一个子函数通过给定的角的数量用公式计算出角度再代入上述代码的角度参数里就OK了

5.python 中 出现 invalid syntax 是什么意思 我是新手 求告知

invalid syntax就是语法错误的意思。

1、invalid(英 [ɪnˈvælɪd] 美 [ˈɪnvəlɪd])

adj.无效的;不能成立的;有病的;病人用的

vt.使伤残;使退役;失去健康

n.病人,病号;残废者;伤病军人

vi.变得病弱;因病而奉命退役

2、syntax(英 [ˈsɪntæks] 美 [ˈsɪnˌtæks])

n.语法;句法;句法规则[分析];语构

3、invalid syntax的意思就是无效语法; 无效的语法。

扩展资料:

Python 是一门有条理的和强大的面向对象的程序设计语言,类似于Perl, Ruby, Scheme, Java。

Python的表达式写法与C/C++类似。只是在某些写法有所差别。

主要的算术运算符与C/C++类似。+, -, *, /, //, **, ~, %分别表示加法或者取正、减法或者取负、乘法、除法、整除、乘方、取补、取余。>>, <<;表示右移和左移。&, |, ^表示二进制的AND, OR, XOR运算。>, <, ==, !=, <=, >;=用于比较两个表达式的值,分别表示大于、小于、等于、不等于、小于等于、大于等于。在这些运算符里面,~, |, ^, &, <<, >>;必须应用于整数。

Python使用and, or, not表示逻辑运算。

is, is not用于比较两个变量是否是同一个对象。in, not in用于判断一个对象是否属于另外一个对象。

Python控制语句:

if语句,当条件成立时运行语句块。经常与else, elif(相当于else if) 配合使用。

for语句,遍历列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。

while语句,当条件为真时,循环运行语句块。

try语句,与except,finally配合使用处理在程序运行中出现的异常情况。

class语句,用于定义类型。

def语句,用于定义函数和类型的方法。

pass语句,表示此行为空,不运行任何操作。

assert语句,用于程序调试阶段时测试运行条件是否满足。

with语句,Python2.6以后定义的语法,在一个场景中运行语句块。比如,运行语句块前加密,然后在语句块运行退出后解密。

yield语句,在迭代器函数内使用,用于返回一个元素。自从Python 2.5版本以后。这个语句变成一个运算符。

raise语句,制造一个错误。

import语句,导入一个模块或包。

from import语句,从包导入模块或从模块导入某个对象。

import as语句,将导入的对象赋值给一个变量。

in语句,判断一个对象是否在一个字符串/列表/元组里。

参考资料:百度翻译-invalid syntax

6.python出现“unexpected indent”怎么办

1、点击运行geany后,在左上角"文件”->;新建,会弹出一个未命名的代码编辑区。

2、先写代码,再保存时候命名,不过最好先点击保存,然后选择一个工程路径,输入文件名,记住要以 .py结尾,这样它会自动识别为python源程序并语法高亮。

3、保存之后我们可以直接敲代码,我们做一个简单的测试代码,先点击编译,再点

执行即可。

4、接着会弹出黑色背景框的控制台,同我们熟悉的c语言运行结果一样,显示出运行结果。

5、有时候复制一段代码来运行,就会提示indent error类的缩进错误,geany有一个功能,就是显示缩进标志,通过它可以看到错误的地方可能多了一个空格,复制这个标记在空格处就行了。

6、使用这个功能,可以在查看 功能菜单 ->;显示缩进标志处打上勾就行,这对找到这种缩进标志非常的便利。

pythoninnutshell

转载请注明出处代码入门网 » pythoninnutshell(PythonString和PyQtQString的区别)

资讯

python行分割(Python中split和split的区别)

阅读(37)

本文主要为您介绍python行分割,内容包括使用python如何按行数拆分文件,python中怎么拆分一行内多列数据成多行,如何用python对一行字符串进行不规则分割。str.split( ) 切割符默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。str.split("

资讯

pythonrw(python中wr表示什么意思)

阅读(27)

本文主要为您介绍pythonrw,内容包括python中w、r表示什么意思,python中w、r表示什么意思,python读写文件中w与wt;r与rt有何区别。文件读写就是一种常见的IO操作。文件读写操作步骤不同的编程语言读写文件的操作步骤大体都是一样的,都分为以

资讯

python获取文件修改时间(python中如何获得文件的修改时间)

阅读(25)

本文主要为您介绍python获取文件修改时间,内容包括python中如何获得文件的修改时间,如何在Python中获取文件创建和修改日期/时间,python中怎样获取文件的修改时间及其他系统信息状态。我们通过文件属性的获取,os.stat() 方法:>>>import os>>>s

资讯

pythonsetdefault(python中.setdefault是什么)

阅读(26)

本文主要为您介绍pythonsetdefault,内容包括python中.setdefault()是什么,python中.setdefault()是什么,python关于dict中的setdefault的问题。>> trainSet={}>>> trainSet.setdefault(1,2) # 给字典trainSet 设置键为1 值为2的键

资讯

python字典key排序(Python中如何以dict的key排序输出)

阅读(27)

本文主要为您介绍python字典key排序,内容包括Python中如何以dict的key排序输出,求助:python元组作为字典的key的排序问题,python怎么对字典进行排序。123456789101112131415#输出的2113顺序却不是我们预想5261的那样初始4102化的顺序,查询相1

资讯

pythonwindows编码转换(python编码转换)

阅读(37)

本文主要为您介绍pythonwindows编码转换,内容包括python编码转换,python中前后台怎么进行编码转换,python编码转换。A. Usage decode/encode:def utf2gbk(s): 按utf-8解码,再按gbk编码 return s.dec

资讯

python(abi)=2.4is(复数3+4i在Python中的表示方式是)

阅读(24)

本文主要为您介绍python(abi)=2.4is,内容包括linux下安装yum时报错需要python(abi)=2.4请问怎么处理,复数3+4i在Python中的表示方式是,Python问题给出下列代码:zhanyi=“用心战疫,共待花期”可以输出。在python中,复数的表示是【实数部+虚数

资讯

python自动提交(如何用python脚本提交JS的表单)

阅读(22)

本文主要为您介绍python自动提交,内容包括如何用python脚本提交JS的表单,如何利用python进行参数的自动填写,怎么用python提交multipart/formdata数据。如果是要提交表单内容给 服务器的 python 处理,那么只需要在表单 <form&gt; 里面的 acti

资讯

python按顺序(python顺序表)

阅读(23)

本文主要为您介绍python按顺序,内容包括python顺序表,求python字典中根据值的大小,按顺序排列键的方法,python从键盘输入a、b两个数,按大小顺序输出它们。本问题回答如下:你可以根据自己的需求稍微改动一下# -*- coding: cp936 -*-class Stu

资讯

python调用另一个文件(python如何调用另一个py文件的所有函数)

阅读(23)

本文主要为您介绍python调用另一个文件,内容包括python如何在一个文件中调用另一个文件的类,python如何调用另一个py文件的所有函数,python怎么在一个文件中调用另一个文件的类。在同一个文件夹下 调用函数:A.py文件:B.py文件:或 调用类:A.py文

资讯

linuxpython库位置(怎样查看python安装路径)

阅读(1)

本文主要为您介绍linuxpython库位置,内容包括linuxpythonos库在什么地方,linuxpython类库在哪,centos中python的类库文件安装在什么位置。方法如下:linux查看python安装位置。有时我们需要查看python的安装位置,好安装第三方库,linux可以先pyt

资讯

python爬虫是什么(python爬虫是什么)

阅读(1)

本文主要为您介绍python爬虫是什么,内容包括python爬虫是什么,python为什么叫爬虫,python里面的爬虫是什么。世界上80%的爬虫是基于Python开发的,学好爬虫技能,可为后续的大数据分析、挖掘、机器学习等提供重要的数据源。什么是爬虫?网络爬虫(

资讯

python未知数(python的不等号是什么)

阅读(1)

本文主要为您介绍python未知数,内容包括请问python怎么用变量表示未知数之间的关系,请问python怎么用变量表示未知数之间的关系,python的不等号是什么。python的不等号如下:!= 不等于 - 比较两个对象是否不相等。

资讯

pythonxef(Python里的flag)

阅读(1)

本文主要为您介绍pythonxef,内容包括pythondef是什么意思,Python里的flag,python里defdrawGap是什么意思。

资讯

pythondll结构体(c结构体怎么用python写)

阅读(1)

本文主要为您介绍pythondll结构体,内容包括c结构体怎么用python写,python怎么构造一个结构体,python怎么导入ctypes。C封装了一个Dll,名为SpjMatlabTest.dll,暴露实现: typedef struct{ double *Min; dou

资讯

python小项目练手(推荐几个适合新手练手的Python项目)

阅读(1)

本文主要为您介绍python小项目练手,内容包括推荐几个适合新手练手的Python项目,python哪些练手的小程序,Python的练手项目值得推荐。实例一:满分推荐,非常值得练习GitHub - Yixiaohan/show-me-the-code: Python 练习册,每天一个小

资讯

python与c语言的区别是(python与C的区别)

阅读(1)

本文主要为您介绍python与c语言的区别是,内容包括python与C的区别,C语言和Python有什么区别呢,c语言和python区别。python与C的区别如下。语言类型不同。Python是一种动态类型语言,又是强类型语言。它们确定一个变量的类型是在您第一次给它

资讯

python3创建文件(python怎么创建一个txt文件)

阅读(1)

本文主要为您介绍python3创建文件,内容包括Python中如何创建文件,python怎么创建一个txt文件,python如何创建文件夹。python怎么创建一个txt文件的方法。如下参考:1.首先使用内置的空闲编辑器进行编辑(右键单击并选择copy),如下图所示。

资讯

python发布服务器(如何用Python搭建一个服务器)

阅读(1)

本文主要为您介绍python发布服务器,内容包括python怎么发布到服务器,如何用Python做大文件上传的服务端,怎么将python部署在服务器上。利用Python自带的包可以建立简单的web服务器。在DOS里cd到准备做服务器根目录的路径下,输入命令:python -