Python字符串


字符串是 Python 中的一种数据结构,表示一系列字符。它是一种不可变的数据类型,这意味着一旦创建了一个字符串,就无法更改它。字符串广泛用于许多不同的应用程序,例如存储和操作文本数据,表示名称、地址和其他可以表示为文本的数据类型。

例子:

"Geeksforgeeks" or 'Geeksforgeeks'

Python 没有字符数据类型,单个字符只是一个长度为 1 的字符串。方括号可用于访问字符串的元素。

print("A Computer Science portal for geeks")

输出:

A Computer Science portal for geeks

在 Python 中创建字符串

Python 中的字符串可以使用单引号或双引号甚至三引号创建。

# Python Program for
# Creation of String

# Creating a String
# with single Quotes
String1 = 'Welcome to the Geeks World'
print("String with the use of Single Quotes: ")
print(String1)

# Creating a String
# with double Quotes
String1 = "I'm a Geek"
print("\nString with the use of Double Quotes: ")
print(String1)

# Creating a String
# with triple Quotes
String1 = '''I'm a Geek and I live in a world of "Geeks"'''
print("\nString with the use of Triple Quotes: ")
print(String1)

# Creating String with triple
# Quotes allows multiple lines
String1 = '''Geeks
            For
            Life'''
print("\nCreating a multiline String: ")
print(String1)

输出:

String with the use of Single Quotes: 
Welcome to the Geeks World

String with the use of Double Quotes: 
I'm a Geek

String with the use of Triple Quotes: 
I'm a Geek and I live in a world of "Geeks"

Creating a multiline String: 
Geeks
            For
            Life

访问 Python String 中的字符

在Python中,可以使用 Indexing 方法访问 String 的各个字符。索引允许负地址引用访问字符串后面的字符,例如-1 指最后一个字符,-2 指倒数第二个字符,等等。

访问超出范围的索引将导致IndexError。只允许整数作为索引、浮点数或其他会导致TypeError 的类型传递。

Python 中的字符串

# Python Program to Access
# characters of String

String1 = "GeeksForGeeks"
print("Initial String: ")
print(String1)

# Printing First character
print("\nFirst character of String is: ")
print(String1[0])

# Printing Last character
print("\nLast character of String is: ")
print(String1[-1])

输出:

Initial String: 
GeeksForGeeks

First character of String is: 
G

Last cha racter of String is: 
s

通过访问字符串中的字符,我们还可以反转它们。我们可以通过写入 [::-1] 来反转字符串,字符串将被反转。

#Program to reverse a string
gfg = "geeksforgeeks"
print(gfg[::-1])

输出:

skeegrofskeeg

我们还可以使用内置的join和reversed函数来反转字符串。

# Program to reverse a string

gfg = "geeksforgeeks"

# Reverse the string using reversed and join function
gfg = "".join(reversed(gfg))

print(gfg)

输出:

skeegrofskeeg

要访问 String 中的某个范围的字符,使用切片的方法。String 中的切片是通过使用切片运算符(冒号)完成的。

# Python Program to
# demonstrate String slicing

# Creating a String
String1 = "GeeksForGeeks"
print("Initial String: ")
print(String1)

# Printing 3rd to 12th character
print("\nSlicing characters from 3-12: ")
print(String1[3:12])

输出:

Initial String: 
GeeksForGeeks

Slicing characters from 3-12: 
ksForGeek

Slicing characters between 3rd and 2nd last character: 
ksForGee

从字符串中删除/更新

在 Python 中,不允许更新或删除字符串中的字符。这将导致错误,因为不支持从字符串中分配项目或删除项目。尽管使用内置的 del 关键字可以删除整个字符串。这是因为字符串是不可变的,因此一旦分配了字符串的元素就不能更改。只能将新字符串重新分配给相同的名称。

角色更新:

# Python Program to Update
# character of a String

String1 = "Hello, I'm a Geek"
print("Initial String: ")
print(String1)

# Updating a character of the String
## As python strings are immutable, they don't support item updation directly
### there are following two ways
#1
list1 = list(String1)
list1[2] = 'p'
String2 = ''.join(list1)
print("\nUpdating character at 2nd Index: ")
print(String2)

#2
String3 = String1[0:2] + 'p' + String1[3:]
print(String3)

输出:

Initial String: Hello, I’m a Geek

Updating character at 2nd Index: Heplo, I’m a Geek Heplo, I’m a Geek

更新整个字符串:

# Python Program to Update
# entire String

String1 = "Hello, I'm a Geek"
print("Initial String: ")
print(String1)

# Updating a String
String1 = "Welcome to the Geek World"
print("\nUpdated String: ")
print(String1)

输出:

Initial String: 
Hello, I'm a Geek

Updated String: 
Welcome to the Geek World

字符删除:

# Python Program to Delete
# characters from a String

String1 = "Hello, I'm a Geek"
print("Initial String: ")
print(String1)

# Deleting a character
# of the String
String2 = String1[0:2] + String1[3:]
print("\nDeleting character at 2nd Index: ")
print(String2)

输出:

Initial String: Hello, I’m a Geek

Deleting character at 2nd Index: Helo, I’m a Geek

删除整个字符串:

使用 del 关键字可以删除整个字符串。此外,如果我们尝试打印字符串,这将产生错误,因为字符串已被删除且无法打印。

# Python Program to Delete
# entire String

String1 = "Hello, I'm a Geek"
print("Initial String: ")
print(String1)

# Deleting a String
# with the use of del
del String1
print("\nDeleting entire String: ")
print(String1)

错误:

Traceback (most recent call last): File “/home/e4b8f2170f140da99d2fe57d9d8c6a94.py”, line 12, in print(String1) NameError: name ‘String1’ is not defined

Python 中的转义序列

在打印带有单引号和双引号的字符串时会导致SyntaxError,因为字符串已经包含单引号和双引号,因此无法使用其中任何一个打印。因此,要打印这样的字符串,要么使用三重引号,要么使用转义序列来打印这样的字符串。

转义序列以反斜杠开头,可以有不同的解释。如果使用单引号表示字符串,则字符串中出现的所有单引号都必须转义,双引号也是如此。

  • Python3
# Python Program for
# Escape Sequencing
# of String

# Initial String
String1 = '''I'm a "Geek"'''
print("Initial String with use of Triple Quotes: ")
print(String1)

# Escaping Single Quote
String1 = 'I\'m a "Geek"'
print("\nEscaping Single Quote: ")
print(String1)

# Escaping Double Quotes
String1 = "I'm a \"Geek\""
print("\nEscaping Double Quotes: ")
print(String1)

# Printing Paths with the
# use of Escape Sequences
String1 = "C:\\Python\\Geeks\\"
print("\nEscaping Backslashes: ")
print(String1)

# Printing Paths with the
# use of Tab
String1 = "Hi\tGeeks"
print("\nTab: ")
print(String1)

# Printing Paths with the
# use of New Line
String1 = "Python\nGeeks"
print("\nNew Line: ")
print(String1)

输出:

Initial String with use of Triple Quotes: 
I'm a "Geek"

Escaping Single Quote: 
I'm a "Geek"

Escaping Double Quotes: 
I'm a "Geek"

Escaping Backslashes: 
C:\Python\Geeks\

Tab: 
Hi    Geeks

New Line: 
Python
Geeks

要忽略字符串中的转义序列,请使用rR ,这意味着该字符串是原始字符串,其中的转义序列将被忽略。

# Printing hello in octal
String1 = "\110\145\154\154\157"
print("\nPrinting in Octal with the use of Escape Sequences: ")
print(String1)

# Using raw String to
# ignore Escape Sequences
String1 = r"This is \110\145\154\154\157"
print("\nPrinting Raw String in Octal Format: ")
print(String1)

# Printing Geeks in HEX
String1 = "This is \x47\x65\x65\x6b\x73 in \x48\x45\x58"
print("\nPrinting in HEX with the use of Escape Sequences: ")
print(String1)

# Using raw String to
# ignore Escape Sequences
String1 = r"This is \x47\x65\x65\x6b\x73 in \x48\x45\x58"
print("\nPrinting Raw String in HEX Format: ")
print(String1)

输出:

Printing in Octal with the use of Escape Sequences: 
Hello

Printing Raw String in Octal Format: 
This is \110\145\154\154\157

Printing in HEX with the use of Escape Sequences: 
This is Geeks in HEX

Printing Raw String in HEX Format: 
This is \x47\x65\x65\x6b\x73 in \x48\x45\x58

字符串的格式化

Python 中的字符串可以使用format()方法进行格式化,这是一种非常通用且功能强大的字符串格式化工具。String 中的 Format 方法包含花括号 {} 作为占位符,可以根据位置或关键字保存参数以指定顺序。

# Python Program for
# Formatting of Strings

# Default order
String1 = "{} {} {}".format('Geeks', 'For', 'Life')
print("Print String in default order: ")
print(String1)

# Positional Formatting
String1 = "{1} {0} {2}".format('Geeks', 'For', 'Life')
print("\nPrint String in Positional order: ")
print(String1)

# Keyword Formatting
String1 = "{l} {f} {g}".format(g='Geeks', f='For', l='Life')
print("\nPrint String in order of Keywords: ")
print(String1)

输出:

Print String in default order: 
Geeks For Life

Print String in Positional order: 
For Geeks Life

Print String in order of Keywords: 
Life For Geeks

二进制、十六进制等整数和浮点数可以四舍五入或使用格式说明符以指数形式显示。

# Formatting of Integers
String1 = "{0:b}".format(16)
print("\nBinary representation of 16 is ")
print(String1)

# Formatting of Floats
String1 = "{0:e}".format(165.6458)
print("\nExponent representation of 165.6458 is ")
print(String1)

# Rounding off Integers
String1 = "{0:.2f}".format(1/6)
print("\none-sixth is : ")
print(String1)

输出:

Binary representation of 16 is 
10000

Exponent representation of 165.6458 is 
1.656458e+02

one-sixth is : 
0.17

字符串可以左对齐()或居中(^),使用格式说明符对齐,由冒号(:)分隔。

# String alignment
String1 = "|{:<10}|{:^10}|{:>10}|".format('Geeks',
                                          'for',
                                          'Geeks')
print("\nLeft, center and right alignment with Formatting: ")
print(String1)

# To demonstrate aligning of spaces
String1 = "\n{0:^16} was founded in {1:<4}!".format("GeeksforGeeks",
                                                    2009)
print(String1)

输出:

Left, center and right alignment with Formatting: 
|Geeks     |   for    |     Geeks|

 GeeksforGeeks   was founded in 2009 !

旧样式格式化是在不使用格式化方法的情况下通过使用%运算符 完成的

# Python Program for
# Old Style Formatting
# of Integers

Integer1 = 12.3456789
print("Formatting in 3.2f format: ")
print('The value of Integer1 is %3.2f' % Integer1)
print("\nFormatting in 3.4f format: ")
print('The value of Integer1 is %3.4f' % Integer1)

输出:

Formatting in 3.2f format: 
The value of Integer1 is 12.35

Formatting in 3.4f format: 
The value of Integer1 is 12.3457

Python 字符串常量

内置函数 描述
string.ascii_letters ascii_lowercase 和 ascii_uppercase 常量的串联。
string.ascii_lowercase 小写字母的连接
string.ascii_uppercase 大写字母的连接
string.digits 字符串中的数字
string.hexdigits 字符串中的十六进制
string.letters 字符串小写和大写的连接
string.lowercase 字符串必须包含小写字母。
string.octdigits 字符串中的八位数字
string.punctuation 具有标点符号的 ASCII 字符。
string.printable 可打印的字符串
String.endswith() 如果字符串以给定后缀结尾则返回 True 否则返回 False
String.startswith() 如果字符串以给定前缀开头,则返回 True,否则返回 False
String.isdigit() 如果字符串中的所有字符都是数字,则返回“True”,否则返回“False”。
String.isalpha() 如果字符串中的所有字符都是字母,则返回“True”,否则返回“False”。
string.isdecimal() 如果字符串中的所有字符都是十进制,则返回 true。
str.format() Python3中的字符串格式化方法之一,允许多次替换和值格式化。
String.index 返回子字符串在字符串中第一次出现的位置
string.uppercase 字符串必须包含大写字母。
string.whitespace 包含所有被视为空格的字符的字符串。
string.swapcase() 方法将给定字符串的所有大写字符转换为小写,反之亦然,并返回它
replace() 返回字符串的副本,其中所有出现的子字符串都替换为另一个子字符串。

弃用的字符串函数

内置函数 描述
string.Isdecimal 如果字符串中的所有字符都是十进制,则返回 true
String.Isalnum 如果给定字符串中的所有字符都是字母数字,则返回 true。
String.Istitle 如果字符串是标题大小写的字符串,则返回 True
String.partition 在第一次出现分隔符时拆分字符串并返回一个元组。
String.Isidentifier 检查字符串是否为有效标识符。
string.len 返回字符串的长度。
string.rindex 如果找到子字符串,则返回字符串中子字符串的最高索引。
string.Max 返回字符串中最高的字母字符。
string.min 返回字符串中最小的字母字符。
String.splitlines 返回字符串中的行列表。
string.capitalize 返回第一个字符大写的单词。
string.expandtabs 展开字符串中的制表符,用一个或多个空格替换它们
string.find 返回最低索引的子字符串。
string.rfind 找到最高的索引。
string.count 返回子字符串 sub 在字符串中的(非重叠)出现次数
string.lower 返回 s 的副本,但大写,字母转换为小写。
string.split 返回字符串的单词列表,如果可选的第二个参数 sep 不存在或为 None
string.rsplit() 返回字符串 s 的单词列表,从末尾扫描 s。
rpartition() 方法将给定的字符串分成三部分
string.splitfields 仅与两个参数一起使用时返回字符串的单词列表。
string.join 将单词列表或元组与中间出现的 sep 连接起来。
string.strip() 它返回删除了前导和尾随空格的字符串副本
string.lstrip 返回删除前导空格的字符串副本。
string.rstrip 返回删除尾随空格的字符串副本。
string.swapcase 将小写字母转换为大写字母,反之亦然。
string.translate 使用表格翻译字符
string.upper 小写字母转换为大写字母。
string.ljust 在给定宽度的字段中左对齐。
string.rjust 在给定宽度的字段中右对齐。
string.center() 在给定宽度的字段中居中对齐。
string-zfill 用零数字填充左侧的数字字符串,直到达到给定的宽度。
string.replace 返回字符串 s 的副本,所有出现的子字符串旧的都替换为新的。
string.casefold() 返回可用于无大小写比较的小写字符串。
string.encode 将字符串编码为 Python 支持的任何编码。默认编码是utf-8。
string.maketrans 返回可用于 str.translate() 的翻译表

Python 中字符串的优点:

  • 字符串的使用范围更大,即用于广泛的操作领域,例如存储和操作文本数据、表示名称、地址和其他可以表示为文本的数据类型。
  • Python 有一组丰富的字符串方法,允许您以多种方式操作和使用字符串。这些方法使执行常见任务变得容易,例如将字符串转换为大写或小写、替换子字符串以及将字符串拆分为列表。
  • 字符串是不可变的,这意味着一旦创建了一个字符串,就无法更改它。这在某些情况下可能是有益的,因为这意味着您可以确信字符串的值不会意外更改。
  • Python 内置了对字符串的支持,这意味着您无需导入任何额外的库或模块即可使用字符串。这使得开始使用字符串变得容易,并降低了代码的复杂性。
  • Python 具有用于创建和操作字符串的简洁语法,这使得编写和读取使用字符串的代码变得容易。

Python 中字符串的缺点:

  • 当我们处理大型文本数据时,字符串可能效率低下。例如,如果您需要对一个字符串执行大量操作,例如替换子字符串或将字符串拆分为多个子字符串,这可能会很慢并且会消耗大量资源。
  • 当您需要表示复杂的数据结构(例如列表或字典)时,可能很难使用字符串。在这些情况下,使用不同的数据类型(例如列表或字典)来表示数据可能更有效。


原文链接:codingdict.net