前面说过了,字符串也是一种数据类型,但字符串有一个特殊的问题,就是编码。

因为计算机是美国人发明的,所以最早只有127个字符被编码到计算机里,就是大小写英文字母,数字和一些符号,这个编码表被称为ASCII码;但是我们要处理中文,这些编码肯定是不够的,所以中国制定了GB2312编码,用来把中文编进去;其它国家都有各自的编码。各自有各自的标准,如果混在一起,就会出现乱码。

因此才有了Unicode编码,Unicodeu将所有语言统一到一套编码里,这样就不会出现乱码了。

那为什么不统一使用Unicode编码呢?

因为ASCII编码用一个字节表示一个字符,Unicode编码则用两个字节表示一个字符;如果你有一个英文书写的文档,那体积可能要大很多,在存储和网络传输中需要的资源就多,十分不划算。

因此本着节约,又出现了UTF-8编码,它把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间。

现在计算机系统通用的字符编码工作方式:

在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。

当我们打开一个文本文件时,先将utf-8转换为unicode载入内存中,当我们需要保存或网络传输时,则再转换成utf-8.

由于python诞生在unicode标准发布之前,所以python2只支持ASCII编码,后来才添加了对unicode的支持,在字符串前加’u’,例如:

print u’中文’

encode(‘utf-8’)  函数可以将unicode编码转换成utf-8; 比如: u’中文’.encode(‘utf-8’)

decode(‘utf-8’)  函数可以将utf-8编码转换成unicode;比如:‘abc’.decode(‘utf-8’)

幸运的是,python3,我们不再需要考虑编码问题,中文直接使用即可。

字符串的格式化:

如果我们定义了一个变量 name = ‘jack’, 我们可能希望这样输出: “你好,我的名字是XXX!” XXX中的内容根据变量内容变化的。

这时候就需要对字符串进行格式化,先看两个例子:

  1. >>> 'Hello, %s' % 'world'
  2. Hello world
  3.  
  4. >>>'Hi, %s, you have %d.' % ('jack',10000)
  5. Hi, jack, you have 10000

没错,% 就是用来格式化字符串的,如果有多个变量,需要用()括起来。

常见的占位符有:

%d     整数

%s     字符串

%f      浮点数

%x     十六进制数

对于浮点数还要以指定是否补0,整数与小数各有多少位,例如:

  1. >>> '%2d-%02d' % (3,1)
  2. '3-01'
  3.  
  4. >>> '%.2f' % 3.1415926
  5. '3.14'

如果你不确定该用什么,记住%s永远起作用,它会把任何类型数据转换为字符串。

  1. >>> 'I am %s , %s years old!' % ('jack', 25)
  2. 'I am jack , 25 years old!'

有时候我们需要输出清单,比如:

  1. 姓名 张三
  2. 年龄 25
  3. 职业 IT

可以这样进行格式化:

  1. >>>userinfo = '''
  2. ... 姓名: %s
  3. ... 年龄: %d
  4. ... 职业: %s
  5. ...''' % ('张三',25,'IT')
  6. >>>print(userinfo)
  7. 姓名':张三
  8. 年龄:25
  9. 职业:IT

用三个引号括起来,三引号不仅可以用来注释代码,还可以用来格式化字符串。

还有一种情况,%本身就是普通字符,比如要输出 7%

  1. >>> print('百分比:%d%%' % 7)
  2. 百分比:7%

这时需要用两个%来表示

python(1) - 字符串的更多相关文章

  1. Python格式化字符串~转

    Python格式化字符串 在编写程序的过程中,经常需要进行格式化输出,每次用每次查.干脆就在这里整理一下,以便索引. 格式化操作符(%) "%"是Python风格的字符串格式化操作 ...

  2. python学习--字符串

    python的字符串类型为str 定义字符串可以用 ‘abc' , "abc", '''abc''' 查看str的帮助 在python提示符里 help(str) python基于 ...

  3. Python格式化字符串和转义字符

    地址:http://blog.chinaunix.net/uid-20794157-id-3038417.html Python格式化字符串的替代符以及含义     符   号     说     明 ...

  4. [转载] python 计算字符串长度

    本文转载自: http://www.sharejs.com/codes/python/4843 python 计算字符串长度,一个中文算两个字符,先转换成utf8,然后通过计算utf8的长度和len函 ...

  5. Python基础-字符串格式化_百分号方式_format方式

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  6. python判断字符串

    python判断字符串 s为字符串s.isalnum() 所有字符都是数字或者字母s.isalpha() 所有字符都是字母s.isdigit() 所有字符都是数字s.islower() 所有字符都是小 ...

  7. Python格式化字符串

    在编写程序的过程中,经常需要进行格式化输出,每次用每次查.干脆就在这里整理一下,以便索引. 格式化操作符(%) "%"是Python风格的字符串格式化操作符,非常类似C语言里的pr ...

  8. python(七)字符串格式化、生成器与迭代器

    字符串格式化 Python的字符串格式化有两种方式:百分号方式.format方式 1.百分号的方式 %[(name)][flags][width].[precision]typecode (name) ...

  9. Python 的字符串格式化和颜色控制

    (部分内容源自武神博客和网络收集.) Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两 ...

  10. python反转字符串(简单方法)及简单的文件操作示例

    Python反转字符串的最简单方法是用切片: >>> a=' >>> print a[::-1] 654321 切片介绍:切片操作符中的第一个数(冒号之前)表示切片 ...

随机推荐

  1. 让sublime text 2更好地支持Python

    SublimeCodeIntel: ~/.codeintel/config里加了python和pythonExtraPaths的路径(Mac): {"Python" : {&quo ...

  2. 第二百四十七天 how can I 坚持

    今天去了趟北海公园,看到地铁宣传图片挺好看的,实景也倒是不错,环境好了,哪都好,今天是蓝天白云啊. 回来的路上看了,扎克伯格对质疑的回应.哎.改变世界在硅谷是行动,而不是口号.change the w ...

  3. 【转】Maven实战(三)---插件动态打包

    原博文出于:http://blog.csdn.net/liutengteng130/article/details/41622013    感谢! maven把项目的构建划分为不同的生命周期(life ...

  4. Java设计模式系列之工厂模式

    工厂模式将大量有共同接口的类实例化,工厂模式可以实现动态决定实例化哪一个类的对象,工厂模式在<Java与模式>中分为三类:1)简单工厂模式(Simple Factory):添加某一种类型的 ...

  5. iOS Launch Images name

    4.0 inch screen:Default-568h@2x.png (old 640x1136 ~ for iPhone 5) 4.0 inch screen: LaunchImage-700-5 ...

  6. delphi 窗口最大化后控件的大小变化怎么设置

    设置按钮的Anchors属性.可以通过此属性设置其边界是否随父类一起变化.默认akleft+aktop即左边界和上边界随窗口变化,也就是说如果窗口位置移动了,按钮将保持其left和top边界与窗口的距 ...

  7. Edit Box多行显示时如何使滚动条始终在下方

    两种方法: ①  CEdit *pEdit = ((CEdit*)GetDlgItem(IDC_EDIT_RXDATA)); pEdit->LineScroll(pEdit->GetLin ...

  8. HDU 3577 Fast Arrangement (线段树区间更新)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3577 题意不好理解,给你数字k表示这里车最多同时坐k个人,然后有q个询问,每个询问是每个人的上车和下车 ...

  9. 学习微软中间语言(MSIL)的绝佳工具 Dotnet IL Editor 推荐

    Dotnet IL Editor是一款.NET平台反编译工具,可以反编译.NET程序集文件为IL代码,并且可以执行,调试反编译后生成的IL代码.它的设计出发点比较直观,新建一个项目,添加程序集文件,设 ...

  10. C# winform 最小化到电脑右下角

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...