Python(8)

概述

### 什么是文本
文本是一串字符,二进制数据一串字节

基本的文本操作

总的来说,有三种基本的文本操作:

  • 解析数据并将数据放入程序内部的结构中
  • 将数据以某种形式转换为另一种相似的形式,数据本身发生了改变
  • 生成全新的数据

字符串基础

Python提供的用于文本处理的最主要的工具就是字符串–不可改变的字符序列。实际上存在两种字符串:

  • 普通字符串:包含了8位ASCII字符,有256个不同的字符。
  • Unicode字符串:包含了Unicode字符,Unicode字符串的处理方式和普通字符串类似,只不过它们每个字符占用2(或者4)个字节,所以它们拥有成千上万甚至上亿个字符。

在Python中,用下列方式可以表示一个文本字符串:

'This is a string'
"This is another string"

字符串的值被双引号或单引号圈起,这两种表示法在程序中完全一样,都允许你在字符串内部引用引号:

'Isn\'t that grand'
"Isn't that grand"

为了让文本字符串扩展到多行,可以在一行末尾使用反斜杠符号,意味着下一行仍是上面字符串的延续:

big = "This is a long\
string that spans two lines"

如果想让字符串的输出分为两行,可以在字符串中嵌入换行符:

big = "This is a long\n\
string that spans two lines"

还有一种方式是用一对连续的三引用符将字符串圈起来:

bigger = """
This is a 
string that
spans two lines
"""

使用上述的三引用符无需加入续行符和换行符,文本将按照原貌被储存

在Python的字符串对象中,也可以在字符串前面加一个r或R,表示该字符串是一个真正的”原”字符串,需要它的原貌:

big = r"This is a long\n\
string that spans two lines"

使用原字符串,反斜线转义和换行符完全被忽略。还可以在字符串前面加一个U或u使之成为一个Unicode字符串:

hello = u"hello\u0020World"

字符串是无法改变的,意味着无论你对它进行什么操作,你总是创建了一个新的字符串对象,而不是改变了原有字符串。字符串是字符的序列,所以可以通过索引的方法访问单个字符:

myStr = "my string"
myStr[0]  #m
myStr[-2]  #n

也可以用切片的方式访问字符串的一部分:

myStr[1:4] #y s
myStr[3:] #string
myStr[-3:]  #ing

切片还能增加第三个参数,作为切片的步长

myStr[:3:-1]  #gnirt
myStr[1::2]  #ysrn

可以通过循环遍历字符串:

for c in myStr

注:不能试图改变字符串序列,字符串不能改变

文件

读取文件

循环

可以使用下列语句逐行对文件对象进行处理:

for line in fileName:
    process(line)

对于二进制数据,行是一个没有意义的函数,所以可以使用read()函数读取二进制文件。当read()不传入参数时,read会读取并返回文件中所有的剩余字节

一次性读取文件

一次性读取文件放入一个大字符串中:

all_the_text = open('fileName.txt').read()  #文本文件所有文本
all_the_data = open('fileName','rb').read()   #二进制文件所有数据

为了安全起见,最好还是给打开的文件对象指定一个名字,这样可以保证在完成操作后迅速关闭文件,防止一些无用的文件对象占用内存:

file_object = open('fileName.txt')
try:
    all_the_text = file_object.read
finally

   转载规则


《Python(8)》 fightingtree 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录