Python基础之字符串处理

一 什么是字符串

1.在Python中,使用单引号或者双引号括起来的,就是字符串。
2.字符串也可以使用六个单引号或者六个双引号括起来。
3.在Python3中,字符串分为两种类型,第一种是str,是unicode字符串,第二种是bytes,就是经过编码后的字符串,是一种字节码,适用于保存在磁盘上或者在网络上传输。

二 字符串拼接

1.使用加号的形式

 a = 'hello'
 b = 'world'
 c = a + b
 print(c)

2.使用格式化的形式

 a = '___'
 b = 'abc'
 c = "%s%s%s" % (a,b,a)

三 字符串格式化

字符串格式化,是将一个字符串中某些经常可能会改变的地方,提取出来,用一些占位符占位,后面再通过格式化的方式填充进去。格式化字符串有两种方式,第一种方式是使用%s的形式,第二种是使用format方法。

1. 使用%的形式

course = 'python'
school = 'zhiliao'
intro = "I love %s,I study in %s" % (course,school)

以上就是使用%的形式进行补充。当然针对不同的数据类型,应该使用不同的格式化:

  • 字符串:使用%s。
  • 整形:使用%d。
  • 浮点类型:使用%f。如果想要指定小数点后的位数。可以使用%.nf来表示,n为1表示一位小数,n为2表示2为小数,依次类推。

2. 使用format函数的形式

  • 使用位置参数占位符,示例代码如下
greet = "I love {},I study in {}".format('python','zhiliao')
  • 使用关键字参数占位符,示例代码如下
greet = "I love {arg1},I study in {arg2}".format(arg1='python',arg2='zhiliao')

四 字符串下标

下标操作:字符串实际上就是跟一个容器一样,也可以跟列表和元组一样进行下标操作。
示例代码:

   username = 'zhiliao'
    print(username[0])
    print(username[1])
    print(username[2])
    print(username[-1]) # 从后面开始

五 切片操作

  • 起始位置:切片操作包括开始位置。负数从后面开始,最后一个元素是-1。
  • 结束位置:切片操作包括的是结束位置前面的一个元素。负数从后面开始,最后一个元素是-1。
  • 步长:代表每次取值的跨度。如果没有设置,默认为1。正数表示从左到右,负数表示从右到左。
  • 逆序:从后面往前开始走。所以起始位置应该是-1,然后要往前面走,那么应该指定步长为-1,然后要取到所有的值,那么结束位置应该留空。

六 字符串常见操作

1. find方法

返回查找字符串的下标位置。如果返回的是-1,代表的是没有查找到该字符串。rfind是从右边到左边。

text = 'hello zhiliao'
position = text.find("zhiliao")
if position > 0:
	print('zhiliao在text中')
else:
	print('zhiliao不在text中')

2. index方法

和find非常类似。只不过当查找不到这个字符串的时候,不是返回-1,而是抛出一个异常。rindex是从右边开始查找。

text = 'hello zhiliao'
position = text.index("python")
print(position)

3. len函数

获取字符串字符的长度。

text = 'hello zhiliao'
length = len(text)
print(length)

4. count方法

用来获取子字符串在原来字符串中出现的次数。

text = 'hello python python'
count = text.count('zhiliao')
print(count)

5. replace方法不会改变原来字符串的值

新创建一个字符串,把原来字符串中的某个字符串替换为你想要的字符串。

text = 'hello python python'
new_text = text.replace("python",'zhiliao',1)
print(text)
print(new_text)

6. split方法

按照给定的字符串进行分割。返回的是一个列表。

text = 'hello python zhiliao'
words = text.split(" ")
for word in words:
	print(word)

7. startswith方法

判断一个字符串是否以某个字符串开始。

text = 'hello python'
if text.startswith("h"):
	print("是以hello开头的")
else:
	print('不是以hello开头的')

8. endswith方法

判断一个字符串是否以某个字符串结束。

text = 'hello python'
if text.endswith("python"):
	print("True")
else:
	print('False')

9. lower方法不会改变原来字符串

将字符串全部改成小写。

text ='I am zhiliao'
new_text = text.lower()
print(text)
print(new_text)

10. upper方法不会改变原来字符串的值

将字符串全部改成大写。

text ='I am zhiliao'
new_text = text.upper()
print(text)
print(new_text)

11. strip方法

将字符串左右的空格全部去掉。

text = '   python    '
new_text = text.strip()
print(text)
print(new_text)

12. lstrip方法

删除字符串左边的空格。

text = '   python    '
new_text = text.strip()
print(text)
print(new_text)

13. partition方法

删除字符串右边的空格。

text = 'hello python zhiliao'
result = text.partition("python")
print(result)

14. isalnum方法

从str出现的第一个位置起,把字符串string分成一个3元素的元组(string_pre_str,str,string_post_str),如果 string中不包含str,则string_pre_str == string。

text = 'zhiliao123.'
result = text.isalnum()
print(result)

15. isalpha方法

如果string至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False。

text = 'hello12'
result = text.isalpha()
print(result)

16. isdigit方法

如果string至少有一个字符并且所有字符都是字母则返回True,否则返回False。

text = '123sbc'
result = text.isdigit()
print(result)

17. isspace方法

如果string只包含数字则返回True否则返回 False。

result = text.isspace()
print(result)

18 isspace

如果字符串中只包含空格,则返回True,否则返回False。

test="  "
print(test.isspace())

七 转义字符

转义字符描述
\在行尾续行符
\n换行符
\’单引号
\"双引号
\t制表符
\反斜杠

八 原生字符串

原始字符串不会对字符串中任何字符进行转义,你写了什么东西,这个字符串就是什么,达到一种所见即所得的效果。
语法:r’xxx’。

text = 'hello \
world'

print(text)


text = 'hello \nworld'
print(text)

text = "apple\"s\tprice is $9"
print(text)

text = '\\'
print(text)

# raw:原生
text = r'abc\ncde'
print(text)

九 字符串编码和解码

在Python3中,默认写的字符串都是unicode类型,unicode是一个万能的字符集,可以存储任意的字符,但是unicode字符串只能在内存中存在,不能在磁盘和网络间传输数据,如果要在文件或者网络间传输数据,必须要将unicode转换为bytes类型的字符串,因此我们在写代码的时候有时候要对unicode和bytes类型字符串进行转换,转换的函数如下:

  • encode(‘utf-8’):将unicode编码成bytes类型,并且编码方式采用的是utf-8。
  • decode(‘utf-8’):将bytes解码成unicode类型,并且解码的方式采用的是utf-8。
  • utf-8是编码的方式,还有其他编码方式,比如gbk、ascii等。
text = 'hello world'
# str
# unicode
# unicode -> bytes:encode
text_bytes = text.encode("utf-8")
print(text_bytes)
print(type(text_bytes))

# bypes->unicode: decode
text_bytes = b'hello world'
text = text_bytes.decode("utf-8")
print(text)
print(type(text))


from hashlib import md5
text = 'hello world'
result = md5(text.encode("utf-8")).hexdigest()
print(result)

with open("abc.txt",'w') as fp:
	fp.write("hello world")

十 Unicode字符串

1.什么是unicode字符串

因为历史原因,在Python2版本中,默认的字符串编码采用的是ascii编码(Python早于unicode发布)。而ascii编码是采用1个字节来存储,也就是8位,最多只能表示28也即256个字符,这在全世界远远是不够的,单拿中国汉字来讲,常用的汉字也有6000多个。因此,为了满足全球各个国家不同语言的编码需求,全球统一码联盟提出了unicode编码。unicode编码默认情况下会采用2个字节存储字符(UCS-2),这样能够存储的216也即65536个字符,但也还是不能满足全世界所有语言,因此后来又补充了用4个字节存储(UCS-4),这就可以包含全球所有的文字了。

2.unicode与其他编码的区别

  • unicode是一个字符集,相当于一个字典,全世界所有的字符或者标点符号都对应一个数字。以后要在计算机中显示这个字符的时候,就使用unicode字符集中对应的那个数字就可以了。
  • utf-8、gbk、latin-1、ascii都是具体的编码实现。 因为unicode中,将大部分的字符都用2个字节存储,但是对于英文字母,比如a,其实他只需要一个字节就够了,如果都用2个字节存储,那么比较浪费硬盘空间或者浪费流量,因此unicode并不适合用来存储。而utf-8则是unicode的一种实现方式,他默认会使用8位,也就是一个字节存储,如果存储不下了,则会动态的改变大小用来存储字符。因此utf-8比较节省空间,并且也可以包含全世界所有的字符。

3. 在Python2中如何定义unicode字符串

在字符串的前面加上一个u,比如u’中国’。

4. unicode可以解决什么问题

在出现乱码或者编码错误的时候可以解决问题。

5.如何将其他形式的编码字符串解码为unicode字符串

greet = '你好'
greet_unicode = greet.decode('utf-8')

6.如何将unicode编码成其他编码字符串

greet = u'你好'
greet_utf8 = greet.encode('utf-8')

7.sys的作用是什么

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

设置字符串在转换编码时候的默认编码。
比如使用函数unicode将一个str字符串转换成unicode字符串,那么默认使用的就是ascii编码。如果你设置了以上的代码,那么将使用utf-8编码。

8.#coding

utf-8是用来干什么的:用来设置Python解释器在读取这个源代码文件时候使用的编码。在python2中默认使用ascii,所以需要改变一下文件的默认编码。而在python3中,默认使用了utf-8,则可以不要更改文件编码就可以支持中文了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

来自万古的忧伤

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

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

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

打赏作者

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

抵扣说明:

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

余额充值