我是Python的新手,正在研究一个段落并分解每个句子中的单词数,然后获取每个句子的平均单词数。在进行数学运算之前,我意识到我需要清理数据以便能够进入每个句子的单个单词。
我链接一个段落的.replace()
方法以获取单个句子,并且当我在{。}上.split()
时。我在结尾处得到一个额外的空字符串元素,使我的句子计数为16而不是15(正确的结果)。
谢谢您的帮助!
我发现一些链接描述了正常的空格split
问题和新行split
选项,但这对它不是新问题也不起作用吗?
def get_average_sentence_length(text):
sentences_in_text = []
text = text.replace("?", ".").replace("!", ".").replace(",", " ").split(".")
sentences_in_text = text
return sentences_in_text
print(get_average_sentence_length(TEXT))
您可以看到最后一个元素是“”。为简洁起见,我已将本段的其余部分删掉。
['...,'我迫不及待地想要成为一个崭新的杰伊','这似乎是探索生活和爱情的好时机','']
答案 0 :(得分:1)
sentences_in_text = text
替换为:
sentences_in_text = [t for t in text if t]
这样您就可以过滤掉""
个空字符串
答案 1 :(得分:1)
Progressbar
将尾随分隔符视为空白字段之前的>
split
如果要避免这种情况,请删除结尾的分隔符:
>>> text = "foo.bar."
>>> text.split(".")
['foo', 'bar', '']
答案 2 :(得分:1)
您可以在返回结果之前进行过滤。像这样
def get_average_sentence_length(text):
sentences_in_text = text.replace("?", ".").replace("!", ".").replace(",", " ").split(".")
return list(filter(None, sentences_in_text))
print(get_average_sentence_length('some? text. hello!'))