热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python内置对象之字符串之基本介绍

文章目录1.前言2.bytes和str的区别3.常见字符串常量以及表达式4.转义序列raw字符串–抑制转义5.多行字符串表示6.规划1.前言字符串是标编程语言中表示文本的数据类型&


文章目录

    • 1. 前言
    • 2. bytes和str的区别
    • 3. 常见字符串常量以及表达式
    • 4. 转义序列
      • raw字符串–抑制转义
    • 5.多行字符串表示
    • 6.规划


1. 前言


字符串是标编程语言中表示文本的数据类型,存储上类似于字符数组,每一个字符元素都可以进行 提取用来操作。从存储的角度来说,字符串表示的是对应长度的ASCII字符的集合,对于任何语言来说都是一样的。C原因中使用char []类型表示字符串,C++和Java使用string表示字符串,与之对应的存在诸多字符串操作函数。现在的python3使用unicode文本类型l(1个字符2个字节来 表示)的str来表示,二进制字节序列使用bytes来表示。



2. bytes和str的区别


  • 表现形式

    # bytes类型前面有个前缀 b
    >>> s1="wzl"
    >>> s2=b"wzl"
    >>> print(s1)
    wzl
    >>> print(s2)
    b'wzl'

  • 处理形式

    str类型以字符类型(2个字节为单位)进行处理,bytes以单个字节为单位进行处理

  • 编码形式

    str类型使用unicode,bytes编码形式utf-8,gbk或其他非unicode类型。 bytes类型只负责以二进制字节序列的形式表示信息,信息的内容由编码方式决定。

  • 总结

    • str和bytes在存储介质上都是以01形式的二进制存在,只不过str类型python解释器自动帮我们完成了编码和解码的操作,bytes类型需要我们自己去指定编解码形式;
    • bytes类型通常用于网络字节传输和硬盘存储;
    • bytes和str类型可以相互转换,可以使用encode()函数对字符串进行编码,转换成二进制字节数据,也可用decode()函数将字节解码成字符串;用decode()函数解码,英文可不要用指定编码格式,中文需要指定解码方式,参见 str和bytes相互转换

3. 常见字符串常量以及表达式

内容参考1




操作解释
s = ‘’空字符串
s = “spam’s”双引号和单引号相同
S = ‘s\np\ta\x00m’转义序列
s = “”"…"""三重引号字符串块
s = r’\temp\spam’Raw字符串
S = b’spam’Python 3.0 中的字节字符串
s = u’spam’仅在Python 2.6 中使用的Unicode字符串
s1 + s2合并
s * 3重复
s[i]索引
s[i:j]分片
len(s)求长度
“a %s parrot” % kind字符串格式化表达式
" a {0} parrot".format(kind)Python 2.6 和Python 3.0 中的字符串格式化方法
s.find(‘pa’)字符串方法调用: 搜索
s.rstrip()移除空格
s.replace(‘pa’, ‘xx’)替换
s.split(’,’)用展位符分割
s.isdigit()内容测试
s.lower()短信息转换
s.endswith(‘spam’)结束测试
‘spam’.join(strlist)插入分隔符
S.encode(‘latin-1’)Unicode编码等
for x in S: print(x)迭代
‘spam’ in S成员关系
[c * 2 for c in S]迭代
map(ord, S)迭代



4. 转义序列


写在前面:python中 单双引号表示的字符串是一样的,但是个人建议使用“ ”,因为可以和其他语言,比如c,c++等形成统一的规范,有助于形成自己统一的编码风格。



  • 问:什么是转义字符?为什么需要转义字符?
  • 答:
    • 对于提问1:转义字符(Escape Character)是指在ASCII码和Unicode等字符集中的无法被键盘录入的字符被当作特殊用途而需要转换回它原来的意义的字符
    • 对于提问2&#xff1a;通俗一点儿来说就是&#xff1a;键盘上的按键不能表示某个字符集中的字符&#xff0c;需要借用某个字符的转义来表示这个字符(如果使用ASCII码表示本质上来讲肯定是可以的&#xff0c;但是记忆不方便&#xff0c;也不方便理解&#xff0c;所以就用常用字符的转义来表示了)&#xff1b;某个字符会被语言解释器用作特殊识别&#xff0c;但需要转义来使用它本来的含义&#xff0c;如 “\”, “<”等。

转义字符意义ASCII码值&#xff08;十进制&#xff09;
\a响铃(BEL)007
\b退格(BS) &#xff0c;将当前位置移到前一列008
\f换页(FF)&#xff0c;将当前位置移到下页开头012
\n换行(LF) &#xff0c;将当前位置移到下一行开头010
\r回车(CR) &#xff0c;将当前位置移到本行开头013
\t水平制表(HT) &#xff08;跳到下一个TAB位置&#xff09;009
\v垂直制表(VT)011
\代表一个反斜线字符’’’092
代表一个单引号&#xff08;撇号&#xff09;字符039
"代表一个双引号字符034
?代表一个问号063
\0空字符(NUL)000
\ddd1到3位八进制数所代表的任意字符三位八进制
\xhh十六进制所代表的任意字符十六进制

特别说明&#xff1a;

\ddd &#xff1a; \后面3个0-7数字表示8进制&#xff0c;可以表示所有ASCII编码及其拓展编码&#xff0c;因为2位数字表示不完

\xaa : \x后面两个0-f表示16进制&#xff0c;同样可以表示所有ASCII编码&#xff0c;只能转义2字符


wangzhonglai&#64;shell:~$ python3
Python 3.8.10 (default, Mar 15 2022, 12:22:08)
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> s&#61;"he\x6c\x6co"
>>> s
&#39;hello&#39;
>>> s&#61;"he\x6c6co"
>>> s
&#39;hel6co&#39;

raw字符串–抑制转义


有时需要需要字符串原始的含义&#xff0c;如“\t”,”\n”等&#xff0c;方法1为重复使用两个反斜杠“\\”&#xff0c;但是如果字符串里面太多这种反斜杠的话&#xff0c;这种操作就不明智了&#xff1b;使用raw字符串可以解决这一问题。


>>> pfd &#61; open("\home\wangzhonglai\new\a.txt","r")
Traceback (most recent call last):File "", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: &#39;\\home\\wangzhonglai\new\x07.txt&#39;

pfd &#61; open(r"\home\wangzhonglai\new\a.txt","r")

注意&#xff1a;linux下默认使用 / 表示路径&#xff0c;和windows下不同&#xff0c;故linux下可以很好的避免这种路径问题。

r&#61;raw&#xff0c;用r’&#39;的方式表示的字符串叫做raw字符串&#xff0c;用于抑制转义。但是对于这种路径习惯 上使用raw字符串。



5.多行字符串表示


  • 三重引号

    • 对于多行文本数据来说&#xff0c;使用三重引号 这种块字符串很方便

>>> str1&#61;"""hello... zhonglai,... nice to meet you!... """>>> str1&#39;hello\nzhonglai,\nnice to meet you!\n&#39;>>> print( str1)hellozhonglai,nice to meet you!

  • 此方式也可以被用来写多行注释

6.规划


  • 下一章&#xff1a;python内置对象之字符串之基本操作



  1. 内容参考<> ↩︎



推荐阅读
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 《2017年3月全国计算机等级考试二级C语言上机题库完全版》由会员分享,可在线阅读,更多相关《2017年3月全国计算机等级考试二级C语言上机题库完全版( ... [详细]
  • 查找给定字符串的所有不同回文子字符串原文:https://www ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
author-avatar
无心之无心
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有