首页 > 编程语言 >Python 1-09 字符串

Python 1-09 字符串

时间:2023-05-22 11:00:45浏览次数:36  
标签:字符 Python 09 str 字符串 path Python38


Python 1-09 字符串

一、Python 字符串

在 Python 3 中,字符串是由 Unicode 码点组成的不可变序列。

x = "Python"
y = x + "Cat"
x is y   # False

字符串是用单引号"或双引号""括起来的一串字符,使用三引号创建多行字符串。
在 Python 中单字符也是用字符串表示。

>>> var1 = 'Hello World!'
>>> var2 = "Jack"
>>> var3 = ""                     # 空字符串
>>> var4 = "it's apple"           # 双引号中可以嵌套单引号
>>> var5 = 'This is "PLANE"!'     # 单引号中可以嵌套双引号
>>> var6 = 'what is 'your'name'
SyntaxError: invalid syntax

但是单引号嵌套单引号或者双引号嵌套双引号就会出现歧义。

二、Python 字符串运算符

假设: a = “Hello”,b = “Python”:

+	字符串连接	a + b	 ‘HelloPython’
*	重复输出字符串	a * 2 	‘HelloHello’
[]	通过索引获取字符串中字符	a[1] 	‘e’
[:] 截取字符串中的一部分	a[1:4] 	‘ell’
in	成员运算符 		“H” in a True
not in	成员运算符   “M” not in a True
r/R	原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。	
%	格式字符串
# path = 'D:\Python38\Scripts'
# path = r'D:\Python38\Scripts'
path = 'D:\Python38\Scripts\n abc'
leng = len(path)
# 通过索引获取元素
leng = len(path)
for i in range(leng):
    print(path[i],end=',' if i<leng-1 else '.\n') # a>b ? x:y

print('abc')
# 通过enumerate()获取索引和元素    
for i, element in enumerate(path):
    print(element,end=',' if i<leng)-1 else '\n')
# 直接获取元素
for i in path:
    print(i,end=',')

三、Python字符串切片操作

  • 从左到右索引默认0开始
  • 从右到左索引默认-1开始
0  1  2  3  4  5
 "  p  y  t  h  o  n  "
   -6 -5 -4 -3 -2 -1

格式:[[start]:[end] [: step]] 包含索引 start 的字符,不包含索引 end 的字符,step 步长。


Python 1-09 字符串_python

>>> s ='abcdef'
>>> s[1:5]
'bcde'
>>> s[:5]
'abcde'
>>> s[1:]
'bcdef'
>>> s[:]
'abcdef'
>>> s[::-1] # 反转字符串
'fedcba'

四、Python 转义字符

有些特殊字符没有办法用普通字符表示,需要进行转义。python 用反斜杠()转义字符。如:

\  (在行尾时)	续行符
\\	反斜杠符号
\’	单引号
\"	双引号
\n	换行
\r	回车
\v	纵向制表符
\t	横向制表符
>>> path = 'D:\Python38\nScripts'
>>> path
'D:\\Python38\nScripts'
>>> str(path)
'D:\\Python38\nScripts'
>>> path.__str__()
'D:\\Python38\nScripts'
>>> repr(path)
"'D:\\\\Python38\\nScripts'"
>>> path.__repr__()
"'D:\\\\Python38\\nScripts'"
>>> print(path)
D:\Python38
Scripts
注:
str:用户易读的表达式
repr:解释器易读的表达式,可以观察转义字符

path = 'D:/Python38/Scripts'
path = r"D:\Python38\Scripts"
path = "D:\\Python38\\Scripts"

>>> path = r'D:\Python38\nScripts'
>>> path
'D:\\Python38\\nScripts'
>>> str(path)
'D:\\Python38\\nScripts'
>>> repr(path)
"'D:\\\\Python38\\\\nScripts'"
>>> print(path)
D:\Python38\nScripts
>>> s = 'abcd \'x\' "y\" 1234'

五、Python 三引号

Python 三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。

>>> hi = '''hi 
there'''
>>> hi   # str()
'hi\nthere'
>>> print(hi)  # 
hi 
there

三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的 WYSIWYG(所见即所得)格式的。
一个典型的用例是,当你需要一块HTML或者SQL时,这时当用三引号标记,使用传统的转义字符体系将十分费神。

errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
cursor.execute('''
CREATE TABLE users (  
	login VARCHAR(8), 
	uid INTEGER,
	prid INTEGER)
''')

六、Python 字符串方法

Python 的字符串常用方法如下:

1、判断类型-9

isalnum()	是否由字母和数字组成。
isalpha()	是否只由字母或文字组成。
isdigit()	是否只由数字组成。
isnumeric()	是否只由数字组成,数字可以是: Unicode 数字,全角数字(双字节),罗马数字,汉字数字。指数类似 ² 与分数类似 ½ 也属于数字。
isdecimal()	是否只包含十进制字符,
isspace()	是否只由空白字符组成。 # s=' \t \n '
islower()	是否由小写字母组成。
isupper()	所有的字母是否都为大写。
istitle()	所有的单词拼写首字母是否为大写,且其他字母为小写。

2、查找和替换-7

endswith(suffix[, start[, end]])	后缀是 suffix 为 True
startswith(substr, start=0,end=len(string))	开头是 substr 为 True
find(sub, start=0, end=len(string))	 返回第一个 sub 开始的索引值或 -1
rfind(sub, start=0, end=len(string))	从右边开始查找.
index(sub, start=0, end=len(string))	跟find()方法一样,只不过 sub 不存在会报一个异常.
rindex( sub, start=0, end=len(string))	 过是从右边开始.
replace(old, new [, max])	 old 替换成 new ,替换不超过 max 次。

3、大小写转换-5

capitalize()		第一个字符转换为大写,其它为小写。
title()				所有单词都是以大写开始,其余字母均为小写。
upper()			小写字母为大写
lower()				大写字符为小写.
swapcase()		大写转换为小写,小写转换为大写。

4、文本对齐-3

rjust(width,[, fillchar])	返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串
ljust(width[, fillchar])	返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。
center(width, fillchar)	返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。

5、去除空白字符-3

strip([chars])	移除字符串头尾指定的字符(默认为空格)或字符序列。
lstrip()	截掉字符串左边的空白字符
rstrip()	删除字符串末尾的空白字符

6、拆分和连接-3

split(str="", num=string.count(str))	num=string.count(str)) 以 str 为分隔符截取字符串,仅截取 num+1 个子字符串
splitlines([keepends])	按照行(’\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
str.join(seq)	以指定字符串 str 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串

7、其它-10

count(sub, start=0, end=len(string))	返回 sub 在 string 里面出现的次数
bytes.decode(encoding=“utf-8”, errors=“strict”)	Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。
encode(encoding=‘UTF-8’,errors=‘strict’)	以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’
expandtabs(tabsize=8)	把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。
len(string)	返回字符串长度
zfill (width)	返回长度为 width 的字符串,原字符串右对齐,前面填充0
maketrans()	创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
max(str)	返回字符串 str 中最大的字母。
min(str)	返回字符串 str 中最小的字母。
translate(table, deletechars="")	根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中

实例:

s = 'this is a Python program'
c = s.capitalize()
t = s.title()
u = s.upper()
l = s.lower()
print(s,c,t,u,l,sep='\n')

yes = input('请确认(y/Y):')
# if yes.upper() == 'Y':
if yes in 'yY':
    print('yes')
else:
    print('no')

内置类

class str(object='')
class str(object=b'', encoding='utf-8', errors='strict')

返回 object 的 字符串 版本。 如果未提供 object 则返回空字符串。如果 encoding 或 errors 均未给出,str(object) 返回 object.str(),这是 object 的“非正式”或格式良好的字符串表示。 对于字符串对象,这是该字符串本身。 如果 object 没有 str() 方法,则 str() 将回退为返回 repr(object)。

如果 encoding 或 errors 至少给出其中之一,则 object 应该是一个 bytes-like object (例如 bytes 或 bytearray)。 在此情况下,如果 object 是一个 bytes (或 bytearray) 对象,则 str(bytes, encoding, errors) 等价于 bytes.decode(encoding, errors)。 否则的话,会在调用 bytes.decode() 之前获取缓冲区对象下层的 bytes 对象。

将一个 bytes 对象传入 str() 而不给出 encoding 或 errors 参数的操作属于第一种情况, 将返回非正式的字符串表示。 例如:

>>> str(b'Zoot!')
"b'Zoot!'"
str() 函数将对象转化为适于人阅读的形式。

>>> dict = {'baidu': 'baidu.com', 'google': 'google.com'};
>>> str(dict) "{'google': 'google.com', 'baidu': 'baidu.com'}"


标签:字符,Python,09,str,字符串,path,Python38
From: https://blog.51cto.com/u_1439909/6321653

相关文章

  • python随机爬取五个电影演员一生生涯中出演的电影名称
    为了随机爬取电影演员的电影,需要使用Python中的网络爬虫技术和相关的第三方库,如requests和BeautifulSoup。以下是一个简单的示例程序:importrandomimportrequestsfrombs4importBeautifulSoup#输入要爬取的演员的姓名actor_name=input('请输入要爬取的演员的姓名:')#......
  • 剑指 Offer 58 - II. 左旋转字符串
    剑指Offer58-II.左旋转字符串</br></br>题目:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例1:输入:s="abcdefg",k......
  • 5-19|记录Python调用salt代码
    #放大一importsalt.clientlocal=salt.client.LocalClient()res=local.cmd(f'{minion_id}','test.ping',timeout=10)#方法二importsalt.configimportsalt.loader__opts__=salt.config.minion_config('/etc/salt/minion')__grains__......
  • Python 什么是数组?
    在Python中,数组通常是指用于表示具有相同数据类型的多个元素的数据结构。在Python中,数组可以表示为列表或NumPy数组。列表:Python中最常用的数组表示法是“列表”。一个列表是由一系列有序元素的集合组成,每个元素可以是字符串、数字、布尔值和其他任何类型的对象。例如: ......
  • Python直连MySQL数据库
        Python标准数据库接口为PythonDB-API,PythonDB-API为开发人员提供了数据库应用编程接口。Python数据库接口支持非常多的数据库,你可以选择适合你项目的数据库:GadFlymSQLMySQLPostgreSQLMicrosoftSQLServer2000InformixInterbaseOracleSybase你可以访问Pytho......
  • python多进程踩过的坑
    转载:python多进程踩过的坑-简书(jianshu.com)背景算法离线测试的上线后,随着业务的增长,算法的构建越来越频繁,数量也越来越多,最近一个任务中就包含28个算法。随着压力的增大,算法离线测试需要算法并行测试来解决效率问题。成果#28个算法单进程执行时间Task1111417runs......
  • Python跨进程共享数据/对象
    转载:(14条消息)Python跨进程共享数据/对象_python多进程共享对象_alpha.5的博客-CSDN博客1.跨进程共享方式在multiprocess库中,跨进程对象共享有三种方式:(1)第一种仅适用于原生机器类型,即python.ctypes当中的类型,这种在mp库的文档当中称为sharedmemory方式,即通过共享内存共享对......
  • Python字符串的encode与decode
    首先要搞清楚,字符串在Python内部的表示是unicode编码.因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编......
  • python解析XML
    xml简介XML全称ExtensibleMarkupLanguage,中文译为可扩展标记语言。XML之前有两个先行者:SGML和HTML,率先登场的是SGML,尽管它功能强大,但文档结构复杂,既不容易学也不易于使用,因此几个主要的浏览器厂商均拒绝支持SGML,这些因素限制了SGML在网上的传播性;1989年HTML登场,它继......
  • python datetime时区转换
    比如把格林威治时间转换为上海时间:fromdatetimeimportdatetimeimportpytzprint('格林威治时间:',datetime.now().strftime("%Y-%m-%d_%H-%M-%S"))print('上海时间:',datetime.now().astimezone(pytz.timezone("Asia/Shanghai")).strftime("......