试图从文本中删除句子列表,只删除第一个字符

时间:2017-02-03 18:05:59

标签: python

我做了以下课程

class SentenceReducer():
    def getRidOfSentences(self, line, listSentences):
        for i in listSentences:
            print(i)
            return line.replace(i, '')

    strings = 'This is a'
    def stripSentences(self, aTranscript):
        result = [self.getRidOfSentences(line, self.strings) for line in aTranScript]
        return(result)

它应该基本上吃一个数据帧然后每行一行检查相关行是否从listSentences中获得一个句子(在这个例子中为1)

然而,当我创建一个新类

newClass = SentenceReducer()

使用以下数据运行脚本

aTranScript = [ 'This is a test', 'This is not a test']
new_df = newClass.stripSentences(aTranScript)

删除原始数据中的'T'。但它应该取代整个句子('This is a')。此外,如果我添加print(i),则会打印T

对这里出了什么问题的想法?

2 个答案:

答案 0 :(得分:1)

首先,aTranscriptaTranScript不是同一个变量(注意后者中的大写s。)

其次,您应该listSentencesself.listSentences访问SentenceReducer.listSentences

第三,您正在使用未在任何地方声明的string

最后,函数stripSentences不会返回任何内容。

答案 1 :(得分:1)

getRidOfSentences内,变量listSentences的值为'This is a',这是一个字符串。

对字符串进行迭代会给出单个字符:

>>> strings = 'This is a'
>>> for x in strings:
...     print(x)
T
h
i
s

i
s

a

您希望将此字符串放在列表中,以便迭代该列表会为您提供整个字符串,而不是其单个字符:

>>> strings = ['This is a']
>>> for x in strings:
...     print(x)
This is a

另一个问题:return循环内的for表示函数在第一次迭代结束时退出,这就是为什么你只看到T,而不是h },is等等。