【自然语言处理】NLP入门(一):1、正则表达式与Python中的实现(1):字符串构造、字符串截取

news/发布时间2024/9/20 5:57:04

文章目录

  • 一、前言
  • 二、正则表达式与Python中的实现
    • 1. 字符串构造
      • a. 使用str函数
      • b. 单引号或双引号构造字符串
      • c. 单双引号构造字符串的特殊用法
      • d. 三重引号字符串
      • e. 典例
    • 2. 字符串截取
      • a. 索引
      • b. 切片
      • c. 注意事项

一、前言

  语言是一种使用具有共同处理规则的沟通指令的广义概念,这些指令可以通过视觉、声音或触觉等方式传递。语言可以分为自然语言、动物语言和计算机语言。
  自然语言是人类发展过程中形成的一种信息交流方式,它包括口语和书面语,并且反映了人类的思想。自然语言是通过语言习得和文化影响逐渐形成的,并且会随着时间的推移而自然地演化。人类使用自然语言进行沟通和表达时,利用语言中的词汇、语法和语义等元素来传递指令。通过自然语言,人们可以交流思想、传递信息、表达感情和进行社交互动。自然语言具有多样性和灵活性,不同的语言有着不同的特点和表达方式,这也反映了不同文化背景和社会环境对语言的影响。
  自然语言处理(Natural Language Processing,NLP) 是一门研究通过建立形式化计算模型来分析、理解和生成自然语言的学科。它的终极目标是让计算机能够具备与人类进行自然语言交流的能力。NLP包含两大问题:

  • 自然语言理解:指让计算机能够理解和解释人类使用的自然语言。这包括对文本或语音进行语法分析、语义分析和语境推断等,从而能够理解句子的含义、语义以及上下文关系。
  • 自然语言生成:指让计算机能够生成符合语法和语义规则的自然语言文本或语音。这包括根据特定的输入或需求,将计算机所处理的信息转化为可读性高、呈现方式自然的自然语言表达形式。

  在自然语言处理领域,研究者们通过设计和开发各种算法、模型和技术,来实现自动处理自然语言的能力。这些技术可以应用于各种领域,比如机器翻译、情感分析、问题回答系统、语音识别和自动摘要等。

  自然语言处理涉及字符串构造、截取与格式化输出等基础操作,本文将介绍使用引号构造字符串、字符串索引、切片操作等。

二、正则表达式与Python中的实现

前文:【深度学习】 Python 和 NumPy 系列教程(二):Python基本数据类型:3、字符串(索引、切片、运算、格式化)

1. 字符串构造

  在Python中字符串的构造,主要通过两种方法来实现,一是使用str函数,二是用单引号、双引号或三引号。在Python中,使用引号是一种非常便捷的构造字符串方式。

a. 使用str函数

str()函数是Python内置的函数,用于将其他类型的数据转换为字符串类型。例如:

num = 123
str1 = str(num)
print(str1)  # 输出:'123'

b. 单引号或双引号构造字符串

  • 在用单引号或双引号构造字符串时,要求引号成对出现
    • 如:‘Python World!’、‘ABC’、“what is your name?”,都是构造字符串的方法。
    • 'string"在Python中不是一个合法的字符串。
str2 = 'Python World!'
str3 = "ABC"
str_error = 'string"

在这里插入图片描述
在这里插入图片描述

c. 单双引号构造字符串的特殊用法

  • 如果代码中的字符串包含了单引号,且不用转义字符,那么整个字符串就要用双引号来构造,否则就会出错。
  • 如果代码中的字符串包含了双引号,且不用转义字符,那么整个字符串要用单引号来构造
"Let's go!"
print("Let's go!")
'Let's go!'
'" Hello world! ",he said. '
print('" Hello world!",he said. ') 

在这里插入图片描述

d. 三重引号字符串

  • 三重引号字符串是一种特殊的用法。三重引号将保留所有字符串的格式信息。 如字符串跨越多行,行与行之间的回车符、引号、制表符或者其他任何信息, 都将保存下来。在三重引号中可以自由的使用单引号和双引号

PS:打三次单引号就会自动识别出三引号

print('''"What's your name?""My name is Jone"''')
print('''"What's your name?"
"My name is Jone"''')

在这里插入图片描述

e. 典例

  编写程序,分别用双引号、单引号和三引号作为字符串边界符,实现语句 Let's say:"Hello World!" 的正确输出:

  • 程序代码
print("Let's say:\"Hello World!\"")
print('Let\'s say:"Hello World!"')
print('''Let's say:"Hello World!"''')
  • 运行结果

在这里插入图片描述

2. 字符串截取

  字符串的截取就是取出字符串中的子串。截取有两种方法:一种是索引str[index]取出单个 字符;另一种是切片str[[start]:[end]:[step]]取出一片字符。

  • 字符串的索引和切片方式与列表类似,索引从0开始,可以使用正向索引和反向索引:
    在这里插入图片描述

a. 索引

  通过索引可以获取字符串中指定位置的单个字符。

s = 'student'
print(s[0])    # 输出: 's',获取第一个字符
print(s[-1])   # 输出: 't',获取倒数第一个字符

在这里插入图片描述

b. 切片

  切片用于获取字符串中一段连续的子串:

  • 模式:<字符串>[begin: end: step]
    • 左闭右开:以step为步长,取begin到end-1处的全部元素
    • step的正负性代表了方向:当step为负时,需要反向输出
    • 缺省值:begin=0;end=len(<字符串>);step=1
print(s[1:3])
  • 输出: tu,获取位置为1到位置为2的子串,不包括位置3的字符
print(s[:3])
  • 输出: stu,从头开始取到位置为2的子串
print(s[-2:])
  • 输出: nt,从倒数第二个位置开始取到结尾
print(s[:])
  • 输出: student,取出全部字符
print(s[::2])
  • 输出: suet,步长为2,每隔一个字符取一个

在这里插入图片描述

c. 注意事项

  • 字符串的切片操作不会修改原始字符串,而是返回一个新的字符串。
  • 字符串是不可变的数据类型,因此不能通过索引或切片的方式修改字符串的某个字符或子串,否则会抛出TypeError异常。
s[0] = 'e'
s[1:3] = 'ut'
TypeError: 'str' object does not support item assignment

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.bcls.cn/UbXE/10216.shtml

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

用html编写的小广告板

用html编写的小广告板 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</tit…

类加载的基本流程

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;JavaEE &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 类加载 1. 加载2. 验证3. 准备4. 解析5. 初…

AI大预言模型——ChatGPT与AI绘图及论文高效写作

原文链接&#xff1a;AI大预言模型——ChatGPT与AI绘图及论文高效写作 2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚于互联网…

JVM运行时数据区——虚拟机栈

文章目录 1、虚拟机栈概述1.1、StackOverflowError1.2、OOM异常 2、栈的存储单位3、局部变量表3.1、局部变量表简介3.2、Slot 4、操作数栈5、栈顶缓存技术6、动态链接7、方法的调用7.1、方法调用的分类7.2、虚方法与非虚方法7.3、关于invokedynamic指令7.4、方法重写的本质7.5、…

【Django】执行查询—跨关系查询中的跨多值关联问题

跨多值查询 跨越 ManyToManyField 或反查 ForeignKey &#xff08;例如从 Blog 到 Entry &#xff09;时&#xff0c;对多个属性进行过滤会产生这样的问题&#xff1a;是否要求每个属性都在同一个相关对象中重合。 filter() 先看filter()&#xff0c;通过一个例子看&#xf…

C语言 vs Rust应该学习哪个?

C语言 vs Rust应该学习哪个&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&am…

Qt应用软件【测试篇】vargrid内存检查工具

文章目录 vargrid介绍vargrid官网vargrid安装常用命令Valgrind的主要命令vargrid介绍 Valgrind是一个用于构建动态分析工具的框架,能自动检测许多内存管理和线程错误,并详细分析程序性能。Valgrind发行版包括七个成熟工具:内存错误检测器、两个线程错误检测器、缓存和分支预…

socket套接字

前言 两个应用程序如果需要进行通讯最基本的一个前提就是能够唯一的标示一个进程&#xff0c;我们知道IP层的ip地址可以唯一标示主机&#xff0c;而TCP层协议和端口号可以唯一标示主机的一个进程&#xff0c;这样我们可以利用ip地址&#xff0b;协议&#xff0b;端口号唯一标示…

工厂生产效率如何提升?这8个重点你不得不看!

企业的竞争本质上就是效率与成本的竞争&#xff08;当然是保证产品质量的前提下&#xff09;&#xff0c;如何持续不断地提高生产效率是企业永续发展的关键问题&#xff0c;提高生产效率也是降低制造成本的根本途径。 当然&#xff0c;我们必须严格根据工艺标准来操作&#xf…

docker存储驱动

目录 一、写时复制和用时分配 二、联合文件系统 2.1、aufs ​编辑 2.2、分层的问题 2.3、overlay 2.4 文件系统区别 三、容器跑httpd案例 3.1、案例1&#xff1a;端口映射 3.2、案例2&#xff1a;制作httpd应用镜像 3.3、案例3&#xff1a;docker数据卷挂载 3.4、案…

探索数据结构:解锁计算世界的密码

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 贝蒂的主页&#xff1a;Betty‘s blog 前言 随着应用程序变得越来越复杂和数据越来越丰富&#xff0c;几百万、…

继承-学习2

this关键字&#xff1a;指向调用该方法的对象&#xff0c;一般我们是在当前类中使用this关键字&#xff0c;所以我们常说代表本类对象的引用 super关键字&#xff1a;代表父类存储空间的标识(可看作父类对象的引用) 父类&#xff1a; package ven;public class Fu {//父类成员…

细嗦MySQL三大日志

文章目录 三大日志&#xff1a;binlog&#xff08;归档日志&#xff09;、redo log&#xff08;重做日志&#xff09;、undo log&#xff08;回滚日志&#xff09;redo log刷盘机制日志文件组 binlog记录格式写入机制 两阶段提交undo log提供回滚操作提供MVCC&#xff08;多版本…

SQL-Labs靶场“46-50”关通关教程

君衍. 一、四十六关 ORDER BY数字型注入1、源码分析2、rand()盲注3、if语句盲注4、时间盲注5、报错注入6、Limit注入 二、四十七关 ORDER BY单引号报错注入1、源码分析2、报错注入3、时间盲注 三、四十八关 ODRER BY数字型盲注1、源码分析2、rand()盲注3、if语句盲注4、时间盲注…

Java进阶(锁)——锁的升级,synchronized与lock锁区别

目录 引出Java中锁升级synchronized与lock锁区别 缓存三兄弟&#xff1a;缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 Java进阶&#xff08;锁&#xff09;——锁的升级&#xff0c;synchronized与lock锁区别 Java中锁升级 看一段代码&#xff1a; public class…

Windows 10 合并磁盘分区 (G and H)

Windows 10 合并磁盘分区 [G and H] 1. 设备和驱动器2. 计算机 -> 管理 -> 存储 -> 磁盘管理3. 删除卷4. 新建简单卷5. 设备和驱动器References 1. 设备和驱动器 2. 计算机 -> 管理 -> 存储 -> 磁盘管理 3. 删除卷 H: -> right-click -> 删除卷 H: 变…

消息中间件篇之RabbitMQ-消息不丢失

一、生产者确认机制 RabbitMQ提供了publisher confirm机制来避免消息发送到MQ过程中丢失。消息发送到MQ以后&#xff0c;会返回一个结果给发送者&#xff0c;表示消息是否处理成功。 当消息没有到交换机就失败了&#xff0c;就会返回publish-confirm。当消息没有到达MQ时&…

10分钟SkyWalking与SpringBoot融合并整合到Linux中

1.依赖配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.2.0.RELEASE</version></dependency><dependency><groupId>org.springframe…

【C++】二叉搜索树

目录 介绍&#xff1a; 一&#xff0c;二叉搜索树操作 1&#xff0c;搜索二叉树的简单封装 2&#xff0c;二叉搜索树的查找 3&#xff0c;二叉搜索树的插入 4&#xff0c;二叉搜索树的删除 二&#xff0c;递归实现二叉搜索树的操作 1&#xff0c;二叉搜索树的递归查找 …

AI也来打掼蛋,难道人工智能也能当领导?

引言&#xff1a;探索AI在复杂卡牌游戏中的决策能力 在人工智能&#xff08;AI&#xff09;的研究领域中&#xff0c;游戏被视为现实世界的简化模型&#xff0c;常常是研究的首选平台。这些研究主要关注游戏代理的决策过程。例如&#xff0c;中国的传统卡牌游戏“掼蛋”&#…
推荐文章