简介
字符串序列用于表示和存储文本,python中字符串是不可变的,一旦声明,不能改变
通常由单引号(' ),双引号(" ),三引号(''' """)包围
其中三引号可以由多行组成,编写多行文本的快捷语法,常用语文档字符串,在文件的特定地点,被当做注释。便捷的多行注释
Python实际三类字符串:
1.通常意义字符串(str)
2.原始字符串,以大写R 或 小写r开始,r'',不对特殊字符进行转义
3.Unicode字符串,u'' basestring子类
在 Python 中,字符串是“不可改变的序列”
1.不可变
2.满足序列基本操作,按位置存取,切片及索引
字符串
1.获得帮助:
代码如下:
>>> help(str)
>>> dir(str)
>>> help(str.replace)
2.不可变性
在创建之后就不能就地改变(同java),不能通过对其某一位置进行赋值而改变字符划分为不可变序列,这些字符串所包含的字符存在从左到右的顺序,不可在原处修改。python中字符串相当于一个不可变序列的列表,一旦声明,每个字符位置固定
意味着若想改变,必须新建一个!
代码如下:
>>>s='spam'
>>>s[0]='k' #TypeError
#修改字符串类似java,重新赋值
s = ‘k' + s[1:]
原始字符串
原始字符串常量,r”abcd”,(r/R)即去掉了反斜线转义机制。关闭转义机制,即\不再表示转义
用处:
1.正则表达式
用于处理正则表达式,减少反斜杠
代码如下:
p4search = re.compile(r'\s*')
2.系统路径
可以方便地表示系统路径
代码如下:
path = r'e:\book'
unicode字符串
Unicode是书写国际文本的标准方法。
Python允许你处理Unicode文本——你只需要在字符串前加上前缀u或U。例如,u"This is a Unicode string."
BP: 在你处理文本文件的时候使用Unicode字符串,特别是当你知道这个文件含有用非英语的语言写的文本。
常用操作
1.基本操作
代码如下:
+ :string1+string2 #联接字符串,将后一个串链接到前一个串的后面
Python不允许在+表达式中出现其他类型,需要手工转【这点不同于java】‘abc'+str(9)
* :string*n #创建一个新字符串重复n次原来的串
[] :string[n] #从字符串中获取对应位置的一个字符
[:] :string[n:m] #截取字符串,如果为:m从头到m如果为n:从n到尾
in :char in string #判断一个字符是否在串中,如果在返回为真(True)
not in :char not in string #判断一个字符是否不在串中,如果在返回为真(True)
r/R : r/Rstring #禁止转义字符的实际意义,整个字符为原始意义
len() : 长度len(s)
2.类型转换
字符串和数字相互转换
字符串到数字int/float/long
数字到字符串str
代码如下:
>>> int(42)
42
>>> int('42')
42
>>> str(42)
'42'
>>> float('42.0')
42.0
>>> str(42.0)
'42.0'
或者使用string模块的函数
s:进行转换的字符串, base:可选,目标进制
代码如下:
import string
string.atoi(s[,base]) #base默认为10,如果为0,那么s就可以是012或0x23这种形式的字符串,如果是16那么s就只能是0x23或0X12这种形式的字符串
string.atol(s[,base]) #转成long
string.atof(s[,base]) #转成float
字符串和列表的转换
字符串转列表:
代码如下:
s='spam'
l = list(s)
l2 = "hello world".spilt()
列表转字符串
代码如下:
k = ‘'.join(l)
注意,不能join列表中的非字符串
3.修改字符串
代码如下:
s = s + 'a'
s = s[3:] + ‘b'
s = s.replace(‘pl','pa')
a = '' #赋值空
del a #整个变量删除
4.索引和分片
索引s[i]
代码如下:
s[0]首个
s[-1] = s[len(s)-1] 倒数第一个
分片s[i:j]
代码如下:
不含上边界,s[1:3] 取[1-2]
s[1:]取1到结束 s[:3] 取开始到2
s[:-1]开始到倒数第二个
s[:]开始到结尾,相当于一个复制
s[1:10:2] 取1-9,步长=2
s[a:b:-2] 步长为负数,两个边界意义反转了,表示从b+1到a,步长-2
s='abcdefg'
s[5:1:-1] 得到 fedc
s[1:3] == s[slice(1,3)] 内置函数
字符串格式化
这里只介绍基本字符串格式化,扩展在后续篇幅介绍%c 单个字符%d 十进制整数%o 八进制整数%s 字符串%x 十六进制整数,其中字母小写%X 十六进制整数,其中字母大写
代码如下:
>>> str = "so %s a day!"
>>> str % 'beautiful'
'so beautiful a day!'
>>> '{0} is {1}'.format('a','b')
'a is b'
>>> template = "{0}, {1} and {2}"
>>> template.format('a', 'b', 'c')
'a, b and c'
内建函数列表
【字符串方法是python文本处理头号工具】
string.capitalize()
字符串第一个字符大写
string.center(width,[,fill])
原字符居中,空格填充至width长度
string.count(str,beg=0,end=len(string))
获得字符串中某一个子串的数目,计算出现次数,可指定范围
string.decode(encoding='UTF-8',errors='strict')
解码字符串,出错默认报ValueError,除非errors是ignore或replace
string.encode(encoding='UTF-8',errors='strict')
string.endswith(suffix,beg=0,end=len(string))
是否以**结尾
string.expandtabs(tabsize=8)
把字符串中tab转为空格,默认8个
string.find(str,beg=0,end=len(stirng))
检测是否包含str,存在返回开始索引,否则返回-1
string.index(str,begin=0,end=len(string))
同find,不存在报异常,ValueError
string.isalnum()
至少一个字符,且所有字符均为字母或数字,True. 检测字符串是否只包含0-9A-Za-z
string.isalpha()
至少一个字符,所有字符都是字母,True. 检测字符串是否只包含字母
string.isdecimal()
只包含十进制数,True
stirng.isdigit()
只包含数字,True. 检测字符串是否仅包含数字
string.islower()
至少一个区分大小写字符且所有字符小写,True. 检测字符串是否均为小写字母
string.isnumeric()
只含数字字符,True
string.isspace()
只包含空格,True. 检测字符串是否均为空白字符
string.istitle()
标题化字符,True. 检测字符串中的单词是否为首字母大写
string.isupper()
至少一个区分大小写字符且所有字符大写,True. 检测字符串是否均为大写字母
string.join(seq)
以string作为分隔符,seq中所有元素合并为新的字符串. 将原字符串插入参数字符串中的每两个字符之间
string.ljust(width)
返回一个原字符串左对齐,空格补充至长度width
string.lower()
转小写. 将字符串全部转为小写
string.lstrip()
截掉左侧的空格
string.partition(str)
= find+split,从str出现第一个位置,截断为pre_str,str,after_str元组,不含str则pre_str=strstring.replace(str1,str2,num=string.count(str1))替换,指定不超过num次,可作为模板实现
string.rfind(str,beg=0,end=len(string))
同find,右边开始
string.rindex(str,beg=0,end=len(string))
同index,右边开始
string.rjust(width)
右对齐,空格补齐
string.rpartition(str)
同partition,右边开始
string.rstrip([chars])
清理右侧空白,包括换行符,返回处理后字符串
string.split(str=””, maxsplit =string.count(str))
以str切片,可指定分割次数, 分割字符串,返回列表,默认分隔符空格
string.splitlines(num=string.count(‘\n'))
s.splitlines([keepends])按行分隔,可指定分割次数
string.startswith(obj,beg=0,end=len(string))
以str开头,True. 检测字符串是否以某一子串开头
string.strip([obj])
在string上执行lstrip和rstrip
string.swapcase
反转string中大小写. 字符串中小写转大写,大写转小写
string.title()
标题花,单词首字母大写,其余小写
string.translate(str,del=””)
s.translate(table)根据str给出表转换string字符,要过滤的字符放在del参数中
string.upper()
转大写. 将字符串全部转为大写
string.zfill(width)
返回长度width的字符串,原字符串右对齐,前面填充0
len(string)
获取字符串的长度
最佳实践
1.循环中用到长度
代码如下:
while i
#修改
size = len(stri)
while i
2.字符串追加
代码如下:
l = ['a', 'b']
result = ''
for i in l:
result += i
#修改
result = ''.join(l)
其他
1.转义符
几个常用:
\n换行,\\反斜杠
\t制表 \'单引号
\r回车 \"双引号
后续需扩展
字符串编码详解
字符串格式化
正则表达式
字符串涉及常用模块(序列化/文本包装等)

theDifferenceBetweewneaforoopandawhileLoopInpythonisthataThataThataThataThataThataThataNumberoFiterationSiskNownInAdvance,而leleawhileLoopisusedWhenaconDitionNeedneedneedneedNeedStobeCheckedStobeCheckedStobeCheckedStobeCheckedStobeceDrepeTysepectients.peatsiveSectlyStheStobeCeptellyWithnumberofiterations.1)forloopsareAceareIdealForitoringercortersence

在Python中,for循環適用於已知迭代次數的情況,而while循環適合未知迭代次數且需要更多控制的情況。 1)for循環適用於遍歷序列,如列表、字符串等,代碼簡潔且Pythonic。 2)while循環在需要根據條件控制循環或等待用戶輸入時更合適,但需注意避免無限循環。 3)性能上,for循環略快,但差異通常不大。選擇合適的循環類型可以提高代碼的效率和可讀性。

在Python中,可以通過五種方法合併列表:1)使用 運算符,簡單直觀,適用於小列表;2)使用extend()方法,直接修改原列表,適用於需要頻繁更新的列表;3)使用列表解析式,簡潔且可對元素進行操作;4)使用itertools.chain()函數,內存高效,適合大數據集;5)使用*運算符和zip()函數,適用於需要配對元素的場景。每種方法都有其特定用途和優缺點,選擇時應考慮項目需求和性能。

foroopsare whenthenemberofiterationsisknown,而whileLoopsareUseduntilacTitionismet.1)ForloopSareIdealForeSequencesLikeLists,UsingSyntaxLike'forfruitinFruitinFruitinFruitIts:print(fruit)'。 2)'

toConcateNateAlistofListsInpython,useextend,listComprehensions,itertools.Chain,orrecursiveFunctions.1)ExtendMethodStraightForwardButverBose.2)listComprechencomprechensionsareconconconciseandemandeconeandefforlargerdatasets.3)

Tomergelistsinpython,YouCanusethe操作員,estextMethod,ListComprehension,Oritertools

在Python3中,可以通過多種方法連接兩個列表:1)使用 運算符,適用於小列表,但對大列表效率低;2)使用extend方法,適用於大列表,內存效率高,但會修改原列表;3)使用*運算符,適用於合併多個列表,不修改原列表;4)使用itertools.chain,適用於大數據集,內存效率高。

使用join()方法是Python中從列表連接字符串最有效的方法。 1)使用join()方法高效且易讀。 2)循環使用 運算符對大列表效率低。 3)列表推導式與join()結合適用於需要轉換的場景。 4)reduce()方法適用於其他類型歸約,但對字符串連接效率低。完整句子結束。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。