专栏首页TalkPythonPython 文本处理介绍

Python 文本处理介绍

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

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

一、删除字符串中的数字

import re

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

# 打印txt的输出结果:
# string with, some hellonumbers

二、使用多个分隔符(数字、逗号、空格、加号、冒号)进行分隔

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']

三、找到所有的数字

import re

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

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

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

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):

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')

现在再来处理字符串:

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。我们可以使用它从文档中提取和计数单词,构建词汇表等等

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并且数量都是一个等等。

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

本文分享自微信公众号 - TalkPython(TalkPython),作者:逍遥散人

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用Python,怎么去除列表中重复的内容?

    TalkPython
  • 用Python播放和录制声音

    Python语言已经无所不能了,今天就来分享一下,如何使用Python来录制和播放音频文件。

    TalkPython
  • Vue + Flask 实战开发系列(四)

    我们上一次实现的接口,任何人都可以请求到数据。这样一来重要的数据,就可以被获取到。为此,我们需要对接口增加一些用户身份认证功能。提高接口数据的安全性。我们需要添...

    TalkPython
  • 计算机二级Python考点解析4

    字符串是以单引号'或双引号"括起来的任意文本,字符串'ac'只有a,c这2个字符。如果'本身也是一个字符,那就可以用""括起来,比如"I'm Jack"包含的字...

    Minerva
  • python测试rabbitmq的消息收

    py3study
  • SIGPIPE导致cronttab和shell脚本等工作异常

    cron和sh等可能被某些共享库hook,而这些共享库可能会触发SIGPIPE,导致crontab和shell工作异常,解决办法是程序忽略SIGPIPE或脚本中...

    一见
  • 用js来实现那些数据结构10(集合02-集合的操作)

      前一篇文章我们一起实现了自定义的set集合类。那么这一篇我们来给set类增加一些操作方法。那么在开始之前,还是有必要解释一下集合的操作有哪些。便于我们更快速...

    zaking
  • ThreadPoolTaskExecutor学习

    老梁
  • Python3基础数据类型

    Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"...

    用户5522200
  • 扶不起的科大讯飞?营收下降近三成盈转亏,一直靠政府补贴撑场面还称给的太少!

    近日,科大讯飞公布业绩快报显示,2019年全年实现营业收入100.89亿元,同比增长27.43%;实现归母净利润7.88亿元,同比增长45.46%。但是,科大讯...

    数据猿

扫码关注云+社区

领取腾讯云代金券