Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python拆分运行文本中的单词?_Python_Parsing_Text Processing - Fatal编程技术网

使用Python拆分运行文本中的单词?

使用Python拆分运行文本中的单词?,python,parsing,text-processing,Python,Parsing,Text Processing,我正在写一段代码,它将从运行的文本中提取单词。此文本可以包含\r\n等分隔符,这些分隔符可能存在于文本中 我想放弃所有这些分隔符,只提取完整的单词。如何使用Python实现这一点?任何可用的python文本处理库?假设您对“word”的定义与正则表达式模块(re)的定义一致,即字母、数字和下划线,则很容易: import re fullwords = re.findall(r'\w+', thetext) 其中text是有问题的字符串(例如,来自文件对象f的f.read() 如果您对单词的定义

我正在写一段代码,它将从运行的文本中提取单词。此文本可以包含\r\n等分隔符,这些分隔符可能存在于文本中


我想放弃所有这些分隔符,只提取完整的单词。如何使用Python实现这一点?任何可用的python文本处理库?

假设您对“word”的定义与正则表达式模块(
re
)的定义一致,即字母、数字和下划线,则很容易:

import re
fullwords = re.findall(r'\w+', thetext)
其中
text
是有问题的字符串(例如,来自文件对象
f
f.read()

如果您对单词的定义不同(例如,您希望包含撇号,因此例如“it's”将被视为“一个单词”),这并不难——只需使用适当的模式作为
findall
的第一个参数,例如撇号格的
r“[\w']+”


如果您需要非常非常复杂(例如,处理单词之间不间断的语言),那么问题会突然变得更加困难,您将需要一些第三方软件包,如。

假设您对“单词”的定义与正则表达式模块(
re
)的定义一致,即字母,数字和下划线,很简单:

import re
fullwords = re.findall(r'\w+', thetext)
其中
text
是有问题的字符串(例如,来自文件对象
f
f.read()

如果您对单词的定义不同(例如,您希望包含撇号,因此例如“it's”将被视为“一个单词”),这并不难——只需使用适当的模式作为
findall
的第一个参数,例如撇号格的
r“[\w']+”


如果您需要非常非常复杂(例如,处理单词之间不使用分隔符的语言),那么问题会突然变得更加困难,您将需要一些第三方软件包,如。

假设您的分隔符是空白字符(如空格、
\r
\n
),那么basic会满足您的要求:

>>> "asdf\nfoo\r\nbar too\tbaz".split()
['asdf', 'foo', 'bar', 'too', 'baz']

假设您的分隔符是空白字符(如空格、
\r
\n
),则basic会执行您想要的操作:

>>> "asdf\nfoo\r\nbar too\tbaz".split()
['asdf', 'foo', 'bar', 'too', 'baz']

如果把每一个标点字符都看作是它所触及的“单词”的一部分,是的,但是在实际应用中,这不是一个非常频繁的用例(例如,解析你不想看到的代码<代码>”,“用尾随逗号完成为“一个单词”;-)。Alex Martelli:是的,标点符号很好,但从这个问题来看,不清楚这是否必要——delimeters的例子都是空白。当然,在单词中保留某些标点符号可能很重要(例如“$”、“-”、“%”……)。我不同意这不是一个普通的用例,它实际上取决于你在构建什么——分裂表格输出是一回事,解析自然语言是另一回事:如果把每个标点字符都看作是它所触及的“单词”的一部分是可以的,但是在实际应用中这不是一个非常频繁的用例。(例如,解析您不想看到的注释,
“touchs”
以逗号结尾作为“单词”;-)@Alex Martelli:是的,关于标点符号的观点很好,但从这个问题来看,不清楚这是否有必要——delimeters的例子都是空白。Oth,在单词中保留某些标点符号可能很重要(例如“$”、“-”、“%”……).我不同意这不是一个常见的用例,但它确实取决于您正在构建什么-拆分表格输出是一回事,解析自然语言是另一回事:)谢谢!这确实帮助我解决了这个问题。我看过nltk,但不幸的是由于C库的安装依赖性,我无法将其与Google App Engine一起使用。谢谢!这确实帮助我解决了这个问题。我看过nltk,但不幸的是由于C库的安装依赖性,我无法将其与Google App Engine一起使用。