我有一个字符串对象(str类型),名为'corpus\ujn'。这是一个由大约一百个句子组成的句子。从这个对象中,我想删除一个名为样板的列表中的子字符串。例如:
boilerplates = ['Contact Number: 444-444-4444.', 'More information provided on request.']
corpus_jn = (corpus_jn.replace(sentence, '') for sentence in boilerplates)
代码执行,但当我尝试打印它时,它会输出一个生成器对象:
print(corpus_jn)
<generator object <genexpr> at 0x0000000012552518>
如何维护或输出str对象
replace
不修改原始字符串。您需要为每个句子重新分配:或者可以使用正则表达式:
这可能会更有效,因为它只在字符串上迭代一次
只是澄清一下:您原来的代码根本不做任何替换。
str
的参数是一个生成器表达式,它生成一个generator
对象,该对象在某个对象上迭代之前不执行任何操作然而,对
str
的调用并没有遍历它,它只是将它转换成<generator object ...>
文本即使您使用
''.join
或列表理解正确地使用了生成器,您也无法获得预期的结果:正如您第一次看到的,单词
hello
从text
替换而来,但是第二次迭代仍然是在原始值上进行的,因此您得到一个没有bye
但仍然包含hello
的字符串。要删除这两个问题,必须使用上面的解决方案,但不能以那种方式使用生成器相关问题 更多 >
编程相关推荐