自然语言处理——字符串基础操作及应用

目录

一、字符串操作

二、正则表达式


一、字符串操作

.count() 方法返回特定的子串在字符串中出现的次数。

seq = '12345,1234,123,12,1'
seq1 = '1'
a = seq.count(seq1)
a

# 输出结果如下
# 5

.strip()方法可以去除字符串首尾的指定符号。无指定时,默认去除空格符 ' ' 和换行符 '\n'

seq = '      你好!'
seq.strip()

# 输出结果如下
# '你好!'

有时候只想要去除字符串开头的某个字符串,但是字符串的末尾有一个同样的字符串并不需要去掉。这时候可以使用 .lstrip() 方法。

seq = '12321'
seq.lstrip('1')

# 输出结果如下
# '2321'

同样,可以使用.rstrip() 方法来单独去除末尾的字符。

seq.rstrip('1')

# 输出结果如下
# '1232'

需要将字符串用特定的符号拼接起来的字符的时候,可以用 .join() 方法来进行拼接。

seq = ['2021', '04', '25']
seq = '-'.join(seq)  # 用 '-' 拼接
seq

# 输出结果如下
# '2021-04-25'

当想要比较两个字符串的大小时,这里需要加载 operator 工具,它 从左到右第一个字符开始,根据设定的规则比较,返回布尔值( True,False )。

import operator
seq1 = '字符串 1 号'
seq2 = '字符串 2 号'
operator.lt(seq1, seq2) # 判断 a < b
# operator.le(seq1, seq2) 判断 a <= b
# operator.eq(seq1, seq2) 判断 a == b
# operator.ne(seq1, seq2) 判断 a != b
# operator.gt(seq1, seq2) 判断 a > b
# operator.ge(seq1, seq2) 判断 a >=b

# 输出结果如下
# Ture

使用 .upper() 将文本转化为大写。

seq = 'appLE'
seq = seq.upper()
seq

# 输出结果如下
# APPLE

使用 .lower()将文本转化为小写。

seq = 'APPle'
seq = seq.lower()
seq

# 输出结果如下
# apple

为了查找到某段字符串当中某个子串的位置信息,有两种方法。一种是.index ,一种是 .find。 两种方法都可实现这个功能,不同的是 index 如果未找到的话,会报错,而 find 未找到的则会返回 -1 值。

seq = '这个是一段字符串'
seq1 = '字符串'
seq.find(seq1)
seq.index(seq1)

# 输出结果如下
# 5
# 5

当想要切分字符串时,有两种常用的方法。第一种是直用序列截取的方法。这种方法十分的简单,就是根据顺序来截取序列上你想要的某些片段。

seq = '这是字符串'
seq1 = seq[0:4]
seq1
seq2 = seq[0]
seq2
seq3 = seq[1:4]
seq3

# 输出结果如下
# '这是字符'
# '这'
# '是字符'

有的时候,需要把一个字符串按照某个字符切分开处理。split()函数可以完成这个操作,函数返回一个由切分好的字符串组成的列表。

seq = '2021-04-25'
seq = seq.split('-')
seq

# 输出结果如下
# ['2021', '04', '25']

需要翻转字符串的时候,那么我们直接用序列操作,直接以上面截取序列的方法,但是按照逆向的来截取实现翻转。

seq = '12345'
seq = seq[::-1]
seq

# 输出结果如下
# '54321'

有时需要把字符串中的某段字符串用另一段字符串代替,比如 2021-04-25 中的 - 用 '/' 代替。我们可以用到 .replace(a,b) ,他可以将某字符串中的 a 字符串 替换成 b 字符串。

seq = '2021-04-25'
seq = seq.replace('-', '/')
seq

# 输出结果如下
# '2021/04/25'

当遇到需要判断字符串是否以某段字符开头的时候。比如想要判断 ‘abcdefg’ 是否以 'a' 开头。可以用 .startswish() 方法。

seq = 'abcdefg'
seq.startswith('a')

# 输出结果如下
# True

同样的方法,我们可以用 .endswith() 来确定字符串是否以某段字符串结尾。

seq = 'abcd'
seq.endswith('d')

# 输出结果如下
# True

有时候,当想要检查字符串的构成,像是检查字符串是否由纯数字构成。

seq = 's123'
seq.isdigit()

# 输出结果如下
# False

 

二、正则表达式

       正则表达式是用于处理字符串的强大工具,它由一个特殊的字符序列构成一定的规则,根据这个规则可以检查字符串是否与这个规则的字符串匹配。正则表达式的合理运用,常常可以事半功倍。

提取年份:

import re

pattern = re.compile(r'[0-9]{4}')
times = ('2018/01/01', '01/01/2019', '01.2017.01')

for time in times:
    match = pattern.search(time)
    if match:
        print('年份有:', match.group())

# 输出结果如下
# 年份有: 2018
# 年份有: 2019
# 年份有: 2017

.findall():这个方法可以找到符合正则表达式的所有匹配结果。这里我们使用了 \d 规则的正则表达式,这个正则表达式可以替我们识别数字。

import re

pattern = re.compile(r'\d')
pattern.findall('o1n2m3k4')

# 输出结果如下
# ['1', '2', '3', '4']

同样的方法,我们编写一个 \D 正则表达式,这个可以匹配一个非数字字符。

pattern = re.compile('\D')
pattern.findall('1A2B3C4D')

# 输出结果如下
# ['A', 'B', 'C', 'D']

.match() 方法与 .search() 方法类似,只匹配一次,并且只从字符串的开头开始匹配。同样,match 结果也是存在 group() 当中。

# 不止是规则,字符也是可以单独作为正则表达式使用。
pattern = re.compile('c')
pattern.match('comcdc').group()

# 输出结果如下
# 'c'

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

凡心curry

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

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

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

打赏作者

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

抵扣说明:

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

余额充值