Python

Python基础-03字符串

2020-05-21  本文已影响0人  Surpassme

3.字符型

    字符型常见的方法如下所示:

3.1 常用方法示例

a=" i love china "

print(f"字符串仅第一个单词首字母大写:{a.capitalize()}")
print(f"字符串仅每个单词首字母大写:{a.title()}")
print(f"对字符串进行拆分:{a.split()}")
print(f"对字符串进行查找:{a.find('i')}")
print(f"对字符串进行替换:{a.replace('i','H')}")
print(f"删除指定的字符:{a.strip('i')}")
print(f"获取字符串长度:{len(a)}")
print(f"字符串拼接:{a+' hello '}")
print(f"字符串复制:{a*3}")
print(f"将其他类型转换为字符:{str(123)},{type(str(123))}")

输出结果如下所示:

字符串仅第一个单词首字母大写: i love china 
字符串仅每个单词首字母大写: I Love China 
对字符串进行拆分:['i', 'love', 'china']
对字符串进行查找:1
对字符串进行替换: H love chHna 
删除指定的字符: i love china 
获取字符串长度:14
字符串拼接: i love china  hello 
字符串复制: i love china  i love china  i love china 
将其他类型转换为字符:123,<class 'str'>

3.2 字符索引和切片

a=" i love china "
print(f"获取第3个字符:{a[3]}")
print(f"获取单词love:{a[3:8]}")
print(f"对字符串进行倒序输出:{a[::-1]}")

输出结果如下所示:

获取第3个字符:l
获取单词love:love 
#### 对字符串进行倒序输出: anihc evol i 

3.3 字符串其他方法

    获取字符串其他的方法和使用方法,可以使用

dir(str)
或
help(str)

3.4 字符串格式化

    字符中格式化主要指对输出的字符串进行统一归化处理。Python提供很多字符串格式化方式,常见分别是%-formatingstr.format()f-string模板字符串

f-string,如果要使用这种字符串格式化,Python版本必须大于3.6版本

3.4.1 %-formating

    这是一种C风格的字符串格式化,有时也称为旧式字符串格式化,示例如下所示:

>>> name="Surpass"
>>> "Hello %s " % name
'Hello Surpass '

    %s格式说明将被替换的字符为字符串的,在这种旧式风格方式中,还可以用于控制输出字符串的格式说明符,例如可以将数字转换为其他进制或填充空格生成特定格式的表格或报告,如下所示:

>>> name="Surpass"
>>> errorCode=123456
>>> "Hello %s ,there is a 0x%x error" % (name,errorCode)
    'Hello Surpass ,there is a 0x1e240 error'

3.4.2 str.format()

    在Python3引入的一种新的字符串格式化方式。这种方法可以免去%操作这种特殊语法,使得字符格式化的语法更加规整,需要在字符串对象上调用format()函数。示例如下所示:

>>> name="Surpass"
>>> "Hello {}".format(name)
    'Hello Surpass'

    另外一种表现形式如下所示:

>>> name="Surpass"
>>> errorCode=123456
>>> "Hello {name} ,there is a 0x%{errorCode:x}".format(name=name,errorCode=errorCode)
    'Hello Surpass ,there is a 0x%1e240'

3.4.3 f-string

    str.format()这种字符串格式化非常强大,也没有额外增加复杂性。但在Python 3.6 之后增加另外一个字符串格式方法,称f-string(formatted string literal)。使用这种方法,可以在字符串常量内使用嵌入的Python表达式,这也是我个人的最爱,后面使用这种方式格式化字符串非常多,示例如下所示:

>>> name="Surpass"
>>> errorCode=123456
>>> f"Hello {name} ,there is a {errorCode:#x}"
    'Hello Surpass ,there is a 0x1e240'
>>> f"test add {sum((1,2,3,4,5))} bool test {True if 2>3 else False}"
'test add 15 bool test False'

3.4.4 模板字符串

    Python中的另一种字符串格式化是模板字符串(template string)。这种机制相对简单,但也不太强大,可能会在某些情况中使用。示例如下所示:

from string import Template
>>> name="surpass"
>>> t=Template("Hello,$name")
>>> t.substitute(name=name)
    'Hello,surpass'

    模板字符串不能使用格式说明符。因此,为了让前面的错误提示代码正常,需要手动将int转换为十六进制,示例如下所示:

from string import Template
>>> name="Surpass"
>>> erroeCode=123456
>>> tempateString="Hello $name ,there is a $errorCode"
>>> Template(tempateString).substitute(name=name,errorCode=hex(errorCode))
    'Hello Surpass ,there is a 0x1e240'

    模板字符串通常用于处理用户输入生成的格式字符串,使用这种方式比较安全。

3.4.5 字符串格式如何选择

    Python提供这么多的字符串格式方法,该如何选择了?可以遵循以下原则

如果字符串由用户提供,使用模板字符串来避免安全问题。如果不是,再考虑版本,Python 3.6 + 则使用f-string,否则使用str.format()

3.5 引号区别

    在Python,字符串可以使用单引号双引号三引号表示,那这三者有什么区别?从字面的意思来看,三者没有任何区别,主要在是使用场景不一样。

 a="a \"" # 正确
 a="a ""  # 报错
  File "<ipython-input-1-8b21a118cfbc>", line 1
    a="a ""
上一篇下一篇

猜你喜欢

热点阅读