前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 文本处理介绍

Python 文本处理介绍

作者头像
TalkPython
发布2019-05-24 16:45:16
9940
发布2019-05-24 16:45:16
举报
文章被收录于专栏:TalkPythonTalkPython

文本处理,在Python中有很多方法,最常见的有正则表达式,标准库的字符串处理方法。当然除了常用的方法外,还可以使用NLTK自然语言工具包处理字符串、使用机器学习机器技术等。

下面我们先用正则表达式处理字符串。

一、删除字符串中的数字
代码语言:javascript
复制
import re

str1 = 'string with456, some111 hello 888 numbers'
txt = re.sub('[0-9]+', '', str1)
print(txt)

# 打印txt的输出结果:
# string with, some hellonumbers
二、使用多个分隔符(数字、逗号、空格、加号、冒号)进行分隔
代码语言:javascript
复制
import re

str1 = 'string with456, some111:hello 888 num+bers'
txt = re.split('[0-9,:+\s]+',str1)
print(txt)

# 打印txt的输出结果:
# ['string', 'with', 'some', 'hello', 'num', 'bers']
三、找到所有的数字
代码语言:javascript
复制
import re

str1 = 'string with456, some111:hello 888 num+bers'
txt = re.findall('[0-9]+', str1)
print(txt)

# 打印txt的输出结果:
# ['456', '111', '888']

四、找出两个相关的单词,它们之间最多有20个字符

代码语言:javascript
复制
import re

testy = 'The quick brown fox jumps over the lazy dog'
m = re.search(r"(quick|slow).{1,20}(fox|camel)", testy)
if m:
print 'Matched',m.groups()
print 'Starting at', m.start()
print 'Ending at', m.end()
五、使用NLTK自然语言处理字符

上面所有处理字符串的方法,都是用正则表达式处理。现在使用NLTK自然语言来处理。

NLTK是一个包含许多自然语言处理模块的Python包。

一个有用的文本预处理包是stopwords,它可以帮助从文本中删除许多stopwords (I, You, have,…)。

首先需要安装nltk,之后再下载nltk的数据包(stopwords):

代码语言:javascript
复制
import nltk
import ssl

try:
    _create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
    pass
else:
    ssl._create_default_https_context = _create_unverified_https_context

nltk.download('stopwords')

现在再来处理字符串:

代码语言:javascript
复制
from nltk.corpus import stopwords

all_stop_words = stopwords.words('english')
inputmessage = "I have to see see the code today"
outmessage = [word for word in inputmessage.split() if word.lower() not in all_stop_words]
print(outmessage)

# ['see', 'see', 'code', 'today']

这不是NLTK的全部,只是一个简单的实例。更多关于NLTK的内容,请查看官方网站。

六、使用Scikit-learn机器学习技术处理字符串

scikit-learn是一个非常流行的机器学习软件包。该模型可用于建立多种监督和非监督学习模型。

一个有用的文本预处理包是sklearn.feature_extraction.text。我们可以使用它从文档中提取和计数单词,构建词汇表等等

代码语言:javascript
复制
from sklearn.feature_extraction.text import CountVectorizer

data = ['hello world',
        'have a good day',
        'hello all',
        'how are you',
        'hello and have a nice day'
        ]

trans = CountVectorizer().fit(data)
print(trans.vocabulary_)

tr=trans.transform(data)
print (tr)

# {'hello': 6, 'world': 9, 'have': 5, 'good': 4, 'day': 3, 'all': 0, 'how': 7, 'are': 2,'you': 10, 'and': 1, #'nice': 8}
#   (0, 6)    1
#   (0, 9)    1
#   (1, 3)    1
#   (1, 4)    1
#   (1, 5)    1
#   (2, 0)    1
#   (2, 6)    1
#   (3, 2)    1
#   (3, 7)    1
#   (3, 10)    1
#   (4, 1)    1
#   (4, 3)    1
#   (4, 5)    1
#   (4, 6)    1
#   (4, 8)    1

从结果中我们可以看到,在列表的第一个元素中有单词6、9并且数量都是一个,在列表第二个元素中有单词3、4、5并且数量都是一个等等。

如果你觉得内容还不错,分享给更多朋友,一起提升编程技能。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 TalkPython 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、删除字符串中的数字
  • 二、使用多个分隔符(数字、逗号、空格、加号、冒号)进行分隔
  • 三、找到所有的数字
  • 五、使用NLTK自然语言处理字符
  • 六、使用Scikit-learn机器学习技术处理字符串
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档