面向对象的 Python - 文件和字符串
弦乐
字符串是每种编程语言中最流行的数据类型。为什么?因为我们比数字更好地理解文本,所以在写作和交谈中我们使用文本和单词,类似地在编程中我们也使用字符串。在字符串中,我们解析文本、分析文本语义并进行数据挖掘——所有这些数据都是人类消耗的文本。Python 中的字符串是不可变的。
字符串操作
在Python中,字符串可以用多种方式标记,使用单引号('),双引号(“),甚至在多行字符串的情况下使用三引号(''')。
>>> # String Examples >>> a = "hello" >>> b = ''' A Multi line string, Simple!''' >>> e = ('Multiple' 'strings' 'togethers')
字符串操作非常有用,并且在每种语言中都得到了广泛的应用。通常,程序员需要分解字符串并仔细检查它们。
字符串可以迭代(逐个字符)、切片或连接。语法与列表相同。
str 类有许多方法可以使操作字符串变得更容易。dir 和 help 命令在 Python 解释器中提供了如何使用它们的指导。
下面是我们常用的一些字符串方法。
先生。 | 方法及说明 |
---|---|
1 | isalpha() 检查所有字符是否都是字母 |
2 | 是数字() 检查数字字符 |
3 | isdecimal() 检查十进制字符 |
4 | 是数字() 检查数字字符 |
5 | 寻找() 返回子字符串的最高索引 |
6 | 标题() 检查标题字符串 |
7 | 加入() 返回一个连接的字符串 |
8 | 降低() 返回小写字符串 |
9 | 上() 返回大写字符串 |
10 | 分区() 返回一个元组 |
11 | 字节数组() 返回给定字节大小的数组 |
12 | 枚举() 返回一个枚举对象 |
13 | 可打印() 检查可打印字符 |
让我们尝试运行几个字符串方法,
>>> str1 = 'Hello World!' >>> str1.startswith('h') False >>> str1.startswith('H') True >>> str1.endswith('d') False >>> str1.endswith('d!') True >>> str1.find('o') 4 >>> #Above returns the index of the first occurence of the character/substring. >>> str1.find('lo') 3 >>> str1.upper() 'HELLO WORLD!' >>> str1.lower() 'hello world!' >>> str1.index('b') Traceback (most recent call last): File "<pyshell#19>", line 1, in <module> str1.index('b') ValueError: substring not found >>> s = ('hello How Are You') >>> s.split(' ') ['hello', 'How', 'Are', 'You'] >>> s1 = s.split(' ') >>> '*'.join(s1) 'hello*How*Are*You' >>> s.partition(' ') ('hello', ' ', 'How Are You') >>>
字符串格式化
在 Python 3.x 中,字符串的格式发生了变化,现在它更符合逻辑并且更灵活。可以使用 format() 方法或格式字符串中的 % 符号(旧式)来完成格式化。
该字符串可以包含文字文本或由大括号 {} 分隔的替换字段,每个替换字段可以包含位置参数的数字索引或关键字参数的名称。
句法
str.format(*args, **kwargs)
基本格式设置
>>> '{} {}'.format('Example', 'One') 'Example One' >>> '{} {}'.format('pie', '3.1415926') 'pie 3.1415926'
下面的示例允许重新排列显示顺序而不更改参数。
>>> '{1} {0}'.format('pie', '3.1415926') '3.1415926 pie'
填充和对齐字符串
可以将值填充到特定长度。
>>> #Padding Character, can be space or special character >>> '{:12}'.format('PYTHON') 'PYTHON ' >>> '{:>12}'.format('PYTHON') ' PYTHON' >>> '{:<{}s}'.format('PYTHON',12) 'PYTHON ' >>> '{:*<12}'.format('PYTHON') 'PYTHON******' >>> '{:*^12}'.format('PYTHON') '***PYTHON***' >>> '{:.15}'.format('PYTHON OBJECT ORIENTED PROGRAMMING') 'PYTHON OBJECT O' >>> #Above, truncated 15 characters from the left side of a specified string >>> '{:.{}}'.format('PYTHON OBJECT ORIENTED',15) 'PYTHON OBJECT O' >>> #Named Placeholders >>> data = {'Name':'Raghu', 'Place':'Bangalore'} >>> '{Name} {Place}'.format(**data) 'Raghu Bangalore' >>> #Datetime >>> from datetime import datetime >>> '{:%Y/%m/%d.%H:%M}'.format(datetime(2018,3,26,9,57)) '2018/03/26.09:57'
字符串是 Unicode
作为不可变 Unicode 字符集合的字符串。Unicode 字符串提供了创建可在任何地方运行的软件或程序的机会,因为 Unicode 字符串可以表示任何可能的字符,而不仅仅是 ASCII 字符。
许多 IO 操作只知道如何处理字节,即使字节对象引用文本数据。因此,了解如何在字节和 Unicode 之间进行互换非常重要。
将文本转换为字节
将字符串转换为字节对象称为编码。编码形式有很多种,最常见的是:PNG;JPEG、MP3、WAV、ASCII、UTF-8 等。这(编码)也是一种以字节表示音频、图像、文本等的格式。
这种转换可以通过encode() 实现。它以编码技术为参数。默认情况下,我们使用“UTF-8”技术。
>>> # Python Code to demonstrate string encoding >>> >>> # Initialising a String >>> x = 'TutorialsPoint' >>> >>> #Initialising a byte object >>> y = b'TutorialsPoint' >>> >>> # Using encode() to encode the String >>> # encoded version of x is stored in z using ASCII mapping >>> z = x.encode('ASCII') >>> >>> # Check if x is converted to bytes or not >>> >>> if(z==y): print('Encoding Successful!') else: print('Encoding Unsuccessful!') Encoding Successful!
将字节转换为文本
将字节转换为文本称为解码。这是通过decode()实现的。如果我们知道使用哪种编码对其进行编码,则可以将字节字符串转换为字符串。
所以编码和解码是逆过程。
>>> >>> # Python code to demonstrate Byte Decoding >>> >>> #Initialise a String >>> x = 'TutorialsPoint' >>> >>> #Initialising a byte object >>> y = b'TutorialsPoint' >>> >>> #using decode() to decode the Byte object >>> # decoded version of y is stored in z using ASCII mapping >>> z = y.decode('ASCII') >>> #Check if y is converted to String or not >>> if (z == x): print('Decoding Successful!') else: print('Decoding Unsuccessful!') Decoding Successful! >>>
文件输入/输出
操作系统将文件表示为字节序列,而不是文本。
文件是磁盘上用于存储相关信息的命名位置。它用于将数据永久存储在磁盘中。
在 Python 中,文件操作按以下顺序进行。
- 打开文件
- 读取或写入文件(操作)。打开文件
- 关闭文件。
Python 使用适当的解码(或编码)调用包装传入(或传出)的字节流,以便我们可以直接处理 str 对象。
打开文件
Python 有一个内置函数 open() 来打开文件。这将生成一个文件对象,也称为句柄,因为它用于相应地读取或修改文件。
>>> f = open(r'c:\users\rajesh\Desktop\index.webm','rb') >>> f <_io.BufferedReader name='c:\\users\\rajesh\\Desktop\\index.webm'> >>> f.mode 'rb' >>> f.name 'c:\\users\\rajesh\\Desktop\\index.webm'
要从文件中读取文本,我们只需将文件名传递给函数即可。文件将被打开进行读取,并且字节将使用平台默认编码转换为文本。