我做了以下课程
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
。
对这里出了什么问题的想法?
答案 0 :(得分:1)
首先,aTranscript
和aTranScript
不是同一个变量(注意后者中的大写s
。)
其次,您应该listSentences
或self.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
},i
,s
等等。