热门标签 | 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. 内容参考<> ↩︎



推荐阅读
  • 2022年7月20日:关键数据与市场动态分析
    2022年7月20日,本文对当日的关键数据和市场动态进行了深入分析。主要内容包括:1. 关键数据的解读与趋势分析;2. 市场动态的变化及其对投资策略的影响;3. 相关经济指标的评估。通过这些分析,帮助读者更好地理解当前市场环境,为决策提供参考。 ... [详细]
  • 开发日志:高效图片压缩与上传技术解析 ... [详细]
  • 本文全面解析了 Python 中字符串处理的常用操作与技巧。首先介绍了如何通过 `s.strip()`, `s.lstrip()` 和 `s.rstrip()` 方法去除字符串中的空格和特殊符号。接着,详细讲解了字符串复制的方法,包括使用 `sStr1 = sStr2` 进行简单的赋值复制。此外,还探讨了字符串连接、分割、替换等高级操作,并提供了丰富的示例代码,帮助读者深入理解和掌握这些实用技巧。 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • 本文详细介绍了 Python 中字符串处理的各种技巧,包括查找、复制、替换、删除、截取、连接、比较、包含检测及大小写转换等操作。特别强调了如何使用 `strip()`、`lstrip()` 和 `rstrip()` 方法去除字符串中的空格和特殊符号,以及如何通过简单的赋值语句实现字符串的复制。此外,还提供了丰富的示例代码,帮助读者更好地理解和应用这些技巧。 ... [详细]
  • 在PHP中,高效地分割字符串是一项常见的需求。本文探讨了多种技术,用于在特定字符(如“或”)后进行字符串分割。通过使用正则表达式和内置函数,可以实现更加灵活和高效的字符串处理。例如,可以使用 `preg_split` 函数来实现这一目标,该函数允许指定复杂的分隔符模式,从而提高代码的可读性和性能。此外,文章还介绍了如何优化分割操作以减少内存消耗和提高执行速度。 ... [详细]
  • Python 开发笔记:深入探讨字符串及其常用方法与技巧 ... [详细]
  • Python默认字符解析:深入理解Python中的字符串处理
    在Python中,字符串是编程中最基本且常用的数据类型之一。尽管许多初学者是从C语言开始接触字符串,通常通过经典的“Hello, World!”程序入门,但Python对字符串的处理方式更为灵活和强大。本文将深入探讨Python中的字符串处理机制,包括字符串的创建、操作、格式化以及编码解码等方面,帮助读者全面理解Python字符串的特性和应用。 ... [详细]
  • 本文总结了JavaScript的核心知识点和实用技巧,涵盖了变量声明、DOM操作、事件处理等重要方面。例如,通过`event.srcElement`获取触发事件的元素,并使用`alert`显示其HTML结构;利用`innerText`和`innerHTML`属性分别设置和获取文本内容及HTML内容。此外,还介绍了如何在表单中动态生成和操作``元素,以便更好地处理用户输入。这些技巧对于提升前端开发效率和代码质量具有重要意义。 ... [详细]
  • Python 编程技巧:实现字符串中字符大小写的转换 ... [详细]
  • 如何在MySQL中选择合适的表空间以优化性能和管理效率
    在MySQL中,合理选择表空间对于提升表的管理和访问性能至关重要。表空间作为MySQL中用于组织和管理数据的一种机制,能够显著影响数据库的运行效率和维护便利性。通过科学地配置和使用表空间,可以优化存储结构,提高查询速度,简化数据管理流程,从而全面提升系统的整体性能。 ... [详细]
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社区 版权所有