一、前言
语言是一种使用具有共同处理规则的沟通指令的广义概念,这些指令可以通过视觉、声音或触觉等方式传递。语言可以分为自然语言、动物语言和计算机语言。
自然语言是人类发展过程中形成的一种信息交流方式,它包括口语和书面语,并且反映了人类的思想。自然语言是通过语言习得和文化影响逐渐形成的,并且会随着时间的推移而自然地演化。人类使用自然语言进行沟通和表达时,利用语言中的词汇、语法和语义等元素来传递指令。通过自然语言,人们可以交流思想、传递信息、表达感情和进行社交互动。自然语言具有多样性和灵活性,不同的语言有着不同的特点和表达方式,这也反映了不同文化背景和社会环境对语言的影响。
自然语言处理(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!"
代码语言:javascript复制print("Let's go!")
代码语言:javascript复制'Let's go!'
代码语言:javascript复制'" Hello world! ",he said. '
代码语言:javascript复制print('" Hello world!",he said. ')
d. 三重引号字符串
- 三重引号字符串是一种特殊的用法。三重引号将保留所有字符串的格式信息。 如字符串跨越多行,行与行之间的回车符、引号、制表符或者其他任何信息, 都将保存下来。在三重引号中可以自由的使用单引号和双引号
PS:打三次单引号就会自动识别出三引号
代码语言:javascript复制print('''"What's your name?""My name is Jone"''')
代码语言:javascript复制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. 索引
通过索引可以获取字符串中指定位置的单个字符。
代码语言:javascript复制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'
代码语言:javascript复制s[1:3] = 'ut'
代码语言:javascript复制TypeError: 'str' object does not support item assignment