字符串(string)篇(二)

1.10 format()函数

在 Python 中,format 是一个内建方法,用于格式化字符串。你可以使用它来插入和格式化字符串中的值。format 方法可以接受多个参数,并且可以使用花括号 {} 来标记参数的位置。

下面是一些 format 方法的例子:
基本用法

text = "Hello, {}!"
formatted_text = text.format("world")
print(formatted_text)  # 输出: Hello, world!

带有位置参数的格式化

text = "{} is {} years old."
formatted_text = text.format("Alice", 30)
print(formatted_text)  # 输出: Alice is 30 years old.

使用关键字参数进行格式化

text = "{name} is {age} years old."
formatted_text = text.format(name="Alice", age=30)
print(formatted_text)  # 输出: Alice is 30 years old.

使用索引进行格式化

text = "The first item is {} and the second is {}."
items = ["apple", "banana"]
formatted_text = text.format(items[0], items[1])
print(formatted_text)  # 输出: The first item is apple and the second is banana.

使用格式化规范

pi = 3.1415926
formatted_text = "Pi is approximately {:.2f}.".format(pi)
print(formatted_text)  # 输出: Pi is approximately 3.14.

在这个例子中,{:.2f} 是一个格式化规范,其中 .2f 表示将浮点数格式化为有两位小数的形式。
与 f-string 结合使用(Python 3.6+)

从 Python 3.6 开始,你还可以使用 f-string,这是一种更简洁、更直观的字符串格式化方式:

name = "Alice"
age = 30
formatted_text = f"{name} is {age} years old."
print(formatted_text)  # 输出: Alice is 30 years old.

f-string 允许你在字符串中直接嵌入表达式,并使用花括号 {} 包围它们。

总的来说,format 方法和 f-string 都是 Python 中非常有用的字符串格式化工具,你可以根据需要选择使用它们。f-string 因为其简洁性和易用性,在 Python 3.6 及更高版本中越来越受欢迎。

1.11 f-string 格式化字符串

在 Python 3.6 及以上版本中,f-string(格式化字符串字面值)是一种新的字符串格式化方式,它使得在字符串中嵌入表达式变得更加简单和直观。f-string 使用前缀 f 或 F 来标识,并且在大括号 {} 中可以直接写入表达式。

下面是一些使用 f-string 格式化字符串的例子:
基本用法

name = "Alice"
age = 30
formatted_string = f"My name is {name} and I am {age} years old."
print(formatted_string)  # 输出: My name is Alice and I am 30 years old.

使用表达式

x = 5
y = 10
formatted_string = f"The sum of {x} and {y} is {x + y}."
print(formatted_string)  # 输出: The sum of 5 and 10 is 15.

格式化数字

pi = 3.14159
formatted_string = f"Pi is approximately {pi:.2f}."
print(formatted_string)  # 输出: Pi is approximately 3.14.

在这个例子中,{pi:.2f} 表示将 pi 变量格式化为保留两位小数的浮点数。
调用方法或函数

def greet(name):
    return f"Hello, {name}!"

print(greet("Bob"))  # 输出: Hello, Bob!

使用字典

person = {'name': 'Alice', 'age': 30}
formatted_string = f"My name is {person['name']} and I am {person['age']} years old."
print(formatted_string)  # 输出: My name is Alice and I am 30 years old.

嵌套大括号

如果需要在 f-string 中包含字面量的大括号字符,你需要使用双大括号 {{ 或 }} 来表示。

formatted_string = f"This is a literal curly brace: {{}}."
print(formatted_string)  # 输出: This is a literal curly brace: {}.

f-string 提供了非常灵活且简洁的字符串格式化方式,并且在很多情况下比 str.format() 方法更加直观和易读。随着 Python 的发展,f-string 已经成为了最受欢迎的字符串格式化方法之一。

1.12 index()函数

在Python中,index() 是一个字符串(str)类的方法,用于找出子字符串在父字符串中首次出现的位置的索引。如果找到了子字符串,它返回子字符串在父字符串中首次出现的起始索引(即第一个字符的位置);如果没有找到,它将抛出一个 ValueError 异常。

以下是 index() 方法的基本用法:

# 创建一个字符串
s = "Hello, world!"

# 使用 index() 方法查找子字符串的位置
index_position = s.index("world")
print(index_position)  # 输出: 7

# 如果子字符串不存在,将抛出 ValueError 异常
try:
    s.index("earth")
except ValueError as e:
    print(e)  # 输出: substring not found

在上面的例子中,s.index(“world”) 返回 7,因为子字符串 “world” 在字符串 s 中首次出现的位置是从索引 7 开始的。

index() 方法还可以接受一个可选的 start 和 end 参数,用于指定在父字符串中搜索子字符串的范围:

s = "banana"

# 在索引 1 到 4 的范围内查找子字符串 "an"
index_position = s.index("an", 1, 4)
print(index_position)  # 输出: 1

# 超出范围的 start 或 end 会导致 ValueError 异常
try:
    s.index("an", 1, 100)  # end 索引超出字符串长度
except ValueError as e:
    print(e)  # 输出: end index is out of range

try:
    s.index("an", -100, 1)  # start 索引小于 0
except ValueError as e:
    print(e)  # 输出: start index is out of range

在这个例子中,s.index(“an”, 1, 4) 在索引 1 到 4 的范围内查找子字符串 “an”,并返回第一个找到的索引位置,即 1。

使用 index() 方法时,请确保你确信子字符串存在于父字符串中,或者准备好处理可能抛出的 ValueError 异常。

1.13 isalnum()函数

isalnum() 是 Python 中字符串(str)对象的一个方法,用于检查字符串中的所有字符是否都是字母或数字。如果字符串中的所有字符都是字母或数字,它返回 True;如果包含任何其他类型的字符(例如空格、标点符号、特殊符号等),它返回 False。

这里是如何使用 isalnum() 方法的例子:

# 创建一个字符串
s1 = "HelloWorld123"

# 使用 isalnum() 方法检查字符串是否只包含字母和数字
print(s1.isalnum())  # 输出: True

# 创建一个包含空格的字符串
s2 = "Hello World 123"

# 使用 isalnum() 方法检查字符串是否只包含字母和数字
print(s2.isalnum())  # 输出: False

# 创建一个包含标点符号的字符串
s3 = "Hello, World!"

# 使用 isalnum() 方法检查字符串是否只包含字母和数字
print(s3.isalnum())  # 输出: False

在上面的例子中,s1.isalnum() 返回 True,因为 s1 中的所有字符都是字母或数字。然而,s2 和 s3 分别包含空格和标点符号,所以它们调用 isalnum() 方法时返回 False。

这个方法在处理用户输入或验证字符串格式时非常有用,例如,当你需要确保用户只输入了字母和数字时。

1.14 isalpha()函数

isalpha() 是 Python 中字符串(str)对象的一个方法,用于检查字符串中的所有字符是否都是字母(即 a-z、A-Z)。如果字符串中的所有字符都是字母,并且字符串至少有一个字符,那么它返回 True;如果字符串包含任何非字母字符(例如数字、空格、标点符号等)或者字符串为空,那么它返回 False。

以下是如何使用 isalpha() 方法的例子:

# 创建一个全字母字符串
s1 = "HelloWorld"

# 使用 isalpha() 方法检查字符串是否只包含字母
print(s1.isalpha())  # 输出: True

# 创建一个包含数字的字符串
s2 = "Hello123"

# 使用 isalpha() 方法检查字符串是否只包含字母
print(s2.isalpha())  # 输出: False

# 创建一个包含空格的字符串
s3 = "Hello World"

# 使用 isalpha() 方法检查字符串是否只包含字母
print(s3.isalpha())  # 输出: False

# 创建一个空字符串
s4 = ""

# 使用 isalpha() 方法检查字符串是否只包含字母
print(s4.isalpha())  # 输出: False

在上面的例子中,s1.isalpha() 返回 True,因为 s1 中的所有字符都是字母。然而,s2、s3 和 s4 分别包含数字、空格和没有字符,因此它们调用 isalpha() 方法时返回 False。

这个方法在处理文本数据或验证用户输入时特别有用,特别是当你需要确保一个字符串仅由字母组成时。

1.15 isdecimal()函数

isdecimal() 是 Python 中字符串(str)对象的一个方法,用于检查字符串中的所有字符是否都是十进制数字字符。如果字符串中的所有字符都是 ‘0’ 到 ‘9’ 之间的数字,它返回 True;如果包含任何其他字符(包括其他数字系统的字符,如 ‘①’、‘Ⅱ’ 等),它返回 False。

下面是如何使用 isdecimal() 方法的例子:

# 创建一个只包含十进制数字的字符串
s1 = "1234567890"

# 使用 isdecimal() 方法检查字符串是否只包含十进制数字
print(s1.isdecimal())  # 输出: True

# 创建一个包含非十进制数字的字符串
s2 = "123a456"

# 使用 isdecimal() 方法检查字符串是否只包含十进制数字
print(s2.isdecimal())  # 输出: False

# 创建一个包含其他数字系统的字符的字符串
s3 = "ⅠⅡⅢ"

# 使用 isdecimal() 方法检查字符串是否只包含十进制数字
print(s3.isdecimal())  # 输出: False

# 创建一个包含空格的字符串
s4 = "123 456"

# 使用 isdecimal() 方法检查字符串是否只包含十进制数字
print(s4.isdecimal())  # 输出: False

在上面的例子中,s1.isdecimal() 返回 True,因为 s1 中的所有字符都是十进制数字。然而,s2、s3 和 s4 分别包含非十进制数字字符、其他数字系统的字符和空格,因此它们调用 isdecimal() 方法时返回 False。

isdecimal() 方法对于验证用户输入是否只包含有效的十进制数字非常有用,尤其是在处理需要数字输入的场景,如密码验证、表单输入等。
isdigit()和isdecimal
()的区别如下12:

  • 作用不同:isdigit()是检测字符串是否只由数字组成,包括09、中文数字等;isdecimal()是检测字符串是否只由十进制数字组成,只包括09。
  • 返回值不同:isdigit():如果字符串只包含数字则返回True,否则返回False;isdecimal():如果字符串只包含十进制数字则返回True,否则返回False。

1.16 isdigit()函数

isdigit() 是 Python 中字符串(str)对象的一个方法,用于检查字符串中的所有字符是否都是数字字符。如果字符串中的所有字符都是 ‘0’ 到 ‘9’ 之间的数字,它返回 True;如果包含任何其他字符(包括字母、空格、标点符号等),它返回 False。

以下是如何使用 isdigit() 方法的例子:

# 创建一个只包含数字的字符串
s1 = "1234567890"

# 使用 isdigit() 方法检查字符串是否只包含数字
print(s1.isdigit())  # 输出: True

# 创建一个包含字母的字符串
s2 = "123a456"

# 使用 isdigit() 方法检查字符串是否只包含数字
print(s2.isdigit())  # 输出: False

# 创建一个包含空格的字符串
s3 = "123 456"

# 使用 isdigit() 方法检查字符串是否只包含数字
print(s3.isdigit())  # 输出: False

# 创建一个包含特殊符号的字符串
s4 = "123#456"

# 使用 isdigit() 方法检查字符串是否只包含数字
print(s4.isdigit())  # 输出: False

在上面的例子中,s1.isdigit() 返回 True,因为 s1 中的所有字符都是数字。然而,s2、s3 和 s4 分别包含字母、空格和特殊符号,因此它们调用 isdigit() 方法时返回 False。

这个方法在处理需要确保字符串只包含数字的场景时非常有用,例如验证用户输入的密码、电话号码或邮政编码等是否有效。

1.17 isidentifier()函数

在Python中,str.isidentifier() 方法用于检查字符串是否是一个有效的Python标识符。一个有效的标识符必须遵循Python的命名规则,包括:

  • 以字母(a-z,A-Z)或下划线(_)开头。
  • 其余部分可以是字母、下划线或数字(0-9)。
  • 不能是Python的保留关键字。

str.isidentifier() 方法会返回一个布尔值,如果字符串是一个有效的标识符,则返回 True;否则返回 False。

下面是如何使用 str.isidentifier() 方法的例子:

# 创建一个有效的Python标识符
identifier = "my_variable"

# 检查它是否是一个有效的标识符
print(identifier.isidentifier())  # 输出: True

# 创建一个无效的标识符(以数字开头)
invalid_identifier1 = "123_variable"

# 检查它是否是一个有效的标识符
print(invalid_identifier1.isidentifier())  # 输出: False

# 创建一个无效的标识符(包含空格)
invalid_identifier2 = "my variable"

# 检查它是否是一个有效的标识符
print(invalid_identifier2.isidentifier())  # 输出: False

# 创建一个与Python关键字相同的字符串
keyword = "if"

# 检查它是否是一个有效的标识符(虽然'if'是一个关键字,但它也是一个有效的标识符)
print(keyword.isidentifier())  # 输出: True

# 检查一个空字符串是否是有效的标识符
empty = ""

# 空字符串不是有效的标识符
print(empty.isidentifier())  # 输出: False

在上面的例子中,identifier.isidentifier() 返回 True,因为 my_variable 是一个有效的Python标识符。然而,invalid_identifier1 和 invalid_identifier2 分别因为以数字开头和包含空格而返回 False。尽管 keyword 是一个Python关键字,但它仍然是一个有效的标识符,因此 keyword.isidentifier() 返回 True。空字符串 empty 不是一个有效的标识符,因此返回 False。

请注意,虽然Python的关键字是有效的标识符,但通常不建议使用它们作为变量名或函数名,因为这样做可能会导致命名冲突和混淆。

  • 27
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
String在JVM中的存储方式是通过一个char数组来存储字符串的字符数据。在JDK8及以前的版本中,String内部定义了一个final char\[\] value来存储字符串数据。而在JDK9中,String的存储结构发生了变化,改为了使用byte\[\]来存储字符串数据。\[2\] String对象在JVM中的存储位置有两种情况: 1. 字符串常量池:在JDK中,双引号括起来的字符串常量,例如"abc"、"def",都是直接存储在方法区的字符串常量池中。这是因为字符串在实际开发中使用非常频繁,为了提高执行效率,将字符串放在字符串常量池中。 2. 堆内存:使用new关键字创建的字符串对象会在堆内存中开辟空间。例如在示例代码中,使用new关键字创建的字符串对象"c",会在堆内存中开辟空间存储字符串数据。\[3\] 需要注意的是,字符串是不可变的,即一旦创建就不能修改。这是因为String类被声明为final,不可被继承,并且String对象在JVM中是不可变的。这意味着一旦字符串对象被创建,它的值就不能被改变。\[3\] #### 引用[.reference_title] - *1* [【JavaString字符串在JVM中的存储及其内存地址问题](https://blog.csdn.net/weixin_43390123/article/details/124376835)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [JVM上_13_StringTable_尚硅谷](https://blog.csdn.net/weixin_43811294/article/details/125462300)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Java基础String字符串存储原理](https://blog.csdn.net/qq_46096136/article/details/126533585)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊猫Devin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值