您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

从python中的字符串中提取英语单词

从python中的字符串中提取英语单词

您实际上有两个问题。

首先,这:

line = re.sub("[^A-Za-z]", "", line.strip())

这将从行中删除所有非字母。这意味着您将不再有任何空格可分割,因此无法将其分隔为单词。

接下来,即使您没有这样做,也可以这样做:

words = ' '.join(line.split())

这不会给您单词列表,而是给您一个字符串,所有这些单词都串联在一起。(基本上,所有空白行的原始行都转换为一个空格。)

因此,在下一行中,当您执行此操作时:

for word in words:

您正在遍历一个字符串,这意味着每个字符串word都是一个字符。因为这就是字符串:字符的可迭代数。

如果您想要每个单词(正如您的变量名所暗示的那样),那么您已经拥有了这些单词,问题在于您将它们重新加入了一个字符串中。只是不要这样做:

words = line.split()
for word in words:

或者,如果要去除字母和空格之外的内容,请使用正则表达式去除字母和空格之外的所有内容,而不要使用除字母和空格之外的所有内容包括空格)的正则表达式:

line = re.sub(r"[^A-Za-z\s]", "", line.strip())
words = line.split()
for word in words:

但是,该模式可能仍然不是您想要的。您是否真的要'abc1def'变成一个字符串'abcdef',还是变成两个字符串,'abc'然后'def'?您可能想要这样:

line = re.sub(r"[^A-Za-z]", " ", line.strip())
words = line.split()
for word in words:

… 要不就:

words = re.split(r"[^A-Za-z]", line.strip())
for word in words:
python 2022/1/1 18:36:06 有235人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶