.split在链接.replace方法时在列表中提供空元素

时间:2019-05-16 15:52:08

标签: python replace split

我是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))

您可以看到最后一个元素是“”。为简洁起见,我已将本段的其余部分删掉。

['...,'我迫不及待地想要成为一个崭新的杰伊','这似乎是探索生活和爱情的好时机','']

3 个答案:

答案 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!'))