📅  最后修改于: 2021-01-04 04:45:25             🧑  作者: Mango
字符串是每种编程语言中最常用的数据类型。为什么?因为我们比文本更好地理解文本,所以在写作和交谈中我们都使用文本和单词,类似地在编程中我们也使用字符串。在字符串我们解析文本,分析文本的语义,并做数据挖掘-而所有这些数据是人类消耗在Python text.The字符串是不可改变的。
在Python中,字符串可以被标记以多种方式,用单引号(’),双引号(“)甚至三倍引号(‘’”)在多字符串的情况下。
>>> # String Examples
>>> a = "hello"
>>> b = ''' A Multi line string,
Simple!'''
>>> e = ('Multiple' 'strings' 'togethers')
字符串操作非常有用,并且在每种语言中都广泛使用。通常,程序员需要分解字符串并仔细检查它们。
字符串可以遍历(逐个),切片,或串联。语法与列表相同。
str类具有许多使字符串处理起来更容易的方法。 dir和help命令在Python解释器中提供了如何使用它们的指南。
以下是我们使用的一些常用字符串方法。
Sr.No. | Method & Description |
---|---|
1 |
isalpha() Checks if all characters are Alphabets |
2 |
isdigit() Checks Digit Characters |
3 |
isdecimal() Checks decimal Characters |
4 |
isnumeric() checks Numeric Characters |
5 |
find() Returns the Highest Index of substrings |
6 |
istitle() Checks for Titlecased strings |
7 |
join() Returns a concatenated string |
8 |
lower() returns lower cased string |
9 |
upper() returns upper cased string |
10 |
partion() Returns a tuple |
11 |
bytearray() Returns array of given byte size |
12 |
enumerate() Returns an enumerate object |
13 |
isprintable() Checks printable character |
让我们尝试运行几个字符串方法,
>>> 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 "", line 1, in
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'
>>> '{:>> '{:*<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字符串可以表示任何可能的字符,而不仅仅是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'
要从文件中读取文本,我们只需要将文件名传递给函数。该文件将打开以供读取,并且字节将使用平台默认编码转换为文本。