1.python字符串处理
(1)去除一些空格和字符使用.strip()函数,如:
input_str = ' 今天天气不错,今天挺风和日丽的 '
input_str.strip()
'今天天气不错,今天挺风和日丽的'
或者单独去除首尾的空格
input_str.lstrip()
'今天天气不错,今天挺风和日丽的 '
(2)替代函数.replace()
input_str.replace('今天','昨天')
' 昨天天气不错,昨天挺风和日丽的 '
(3)查找.find()
input_str.find('今天')
1
由于首部有空格,所以'今天'的其实位置从1开始。
(4)判断操作
input_str.isalpha()
False
input_str.isdigit()
False
这里的判断是表示,是否全部是数字或者字符。
(5)分割和合并
input_str = '今天 天气 不错,今天 挺风 和日 丽的'
input_str = input_str.split(' ') #分割
input_str
['今天', '天气', '不错,今天', '挺风', '和日', '丽的']
''.join(input_str) #合并
'今天天气不错,今天挺风和日丽的'
(6) 正则表达式语法
·指定好匹配的模式-pattern
·选择相应的方法-match,search等·得到匹配结果-group
.re.match #从开始位置开始匹配,如果开头没有则无. re.search #搜索整个字符串
. re.findall #搜索整个字符串,返回一个list
首先选定好匹配的模板并赋值
pattern = re.compile(r'')
input='自然语言处理很重要。12bc789'
import re
pattern = re.compile(r'\d')
re.findall(pattern,input)
['1', '2', '7', '8', '9']
‘\d’表示数字;‘\D’表示非数字;'\w'匹配字母和数字;'\W'匹配非字母和数字;'\s'匹配间隔符号
pattern = re.compile(r'\D')
re.findall(pattern,input)
['自', '然', '语', '言', '处', '理', '很', '重', '要', '。', 'b', 'c']
精确匹配,把m位的数字取出'\d{m}'
pattern = re.compile(r'\d{2}')
re.findall(pattern,input)
['12', '78']
match 与search
它们的返回不是一个简单的字符串列表,而是一个 MatchObject,可以得到更多的信息。
match如果匹配不成功,它们则返回一个NoneType报错。所以在对匹配完的结果进行操作之前,必需先判断一下是否匹配成功了。
match 从字符串的开头开始匹配,如果开头位置没有匹配成功,就算失败了;而search 会跳过开头,继续向后寻找是否有匹配的字符串。
input2 = '123'
pattern = re.compile(r'\d')
match = re.match(pattern,input2)
match.group()
'1'
(7)字符串的替换和修改
在目标字符串中规格规则查找匹配的字符串,再把它们替换成指定的字符串。你可以指定一个最多替换次数,否则将替换所有的匹配到的字符串。
sub ( rule , replace , target [,count] )
subn(rule , replace , target [,count])----返回一个元组,第一个元素是被替换的字符串,第二个元素是一个数字,表明产生了多少次替换。
第一个参数是正则规则,第二个参数是指定的用来替换的字符串,第三个参数是目标字符串,第四个参数是最多替换次数。
input2 = '123'
pattern = re.compile(r'\d')
re.sub(pattern,'数字',input2)
'数字数字数字'
input2 = '123'
pattern = re.compile(r'\d')
re.subn(pattern,'数字',input2)
('数字数字数字', 3)
(8)分割
split 切片函数。使用指定的正则规则在目标字符串中查找匹配的字符串,用它们作为分界,把字符串切片。
split( rule , target [,maxsplit] )
第一个参数是正则规则,第二个参数是目标字符串,第三个参数是最多切片次数,返回一个被切完的子字符串的列表
input='自然语言处理123机器学习456深度学习'
pattern = re.compile(r'\d+')
re.split(pattern,input)
['自然语言处理', '机器学习', '深度学习']
(9)分词
import nltk
from nltk.tokenize import word_tokenize
from nltk.text import Text
input_str="Today's weather is good"
tokens = word_tokenize(input_str)
tokens = [word.lower()for word in tokens]
['today', "'s"]
word.lower表示将大写换成小写。
(10)停用词
test_words = [word.lower() for word in tokens]
test_words_set = set(test_words)
test_words_set.intersection(set(stopwords.words('english')))
{'is'}