Python TypeError:无法连接';str';和';非类型';物体?

Python TypeError:无法连接';str';和';非类型';物体?,python,string,nonetype,Python,String,Nonetype,我有一个很大的脚本(如果有必要的话,我会发布整个脚本,但它非常大),当我运行它时,它的开头很好,但它会立即给我“TypeError:无法连接”str“和”NoneType“对象”,当涉及到最后一段代码时: with open("self.txt", "a+") as f: f = open("self.txt", "a+") text = f.readlines() text_model = markovify.Text(text) for i in r

我有一个很大的脚本(如果有必要的话,我会发布整个脚本,但它非常大),当我运行它时,它的开头很好,但它会立即给我“TypeError:无法连接”str“和”NoneType“对象”,当涉及到最后一段代码时:

with open("self.txt", "a+") as f:
    f = open("self.txt", "a+")
    text = f.readlines()     
    text_model = markovify.Text(text)
    for i in range(1):
        tool = grammar_check.LanguageTool('en-GB')
        lin = (text_model.make_sentence(tries=800))
        word = ('' + lin)
        matches = tool.check (word)
        correct = grammar_check.correct (word, matches)
        print ">",
        print correct
        print ' '
        f = open("self.txt", "a+")
        f.write(correct + "\n")      

我到处都找了,但什么也没找到。这似乎与:
word=(''+lin)
有关。但无论我做什么,我都无法修复它。我做错了什么?

不能连接字符串和非类型对象。在代码中,您的变量
lin
似乎没有被指定您认为是的值。您可以尝试以下启动方式启动的
if
块:

如果类型(lin)=str:
一些代码
其他:
引发异常(“lin不是正确的数据类型”)


要在打印之前验证
lin
是否是正确的数据类型。

我不确定我是如何做到的,但通过一点修改和谷歌搜索,我想出了一个解决方案,更正的代码在这里(如果您感兴趣):


感谢所有的回复,他们让我思考,这就是我修复它的方式

您试图连接的字符串可能重复,
“string”+“string”
,其中一个字符串实际上不是字符串,而是
非类型
,可能是返回函数的字符串。它看起来像
文本模型。make\u-statement()
可以返回
。您要么修复该函数(因此它总是返回字符串),要么在此代码中检查
None
。Python回溯显示错误发生的行。欢迎使用StackOverflow。请阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到一个文本文件中,并重现您描述的问题。谢谢,这种方法很有效。它可以打印lin,但是当它在if语句中时,lin没有改变(它是一个马尔可夫链字符串),所以它只打印相同的内容。我该怎么办?这基本上就是原始代码所做的。最好是解决根本问题。
with open("self.txt", "a+") as f:
                 f = open("self.txt", "a+")
                 text = f.readlines()     
                 text_model = markovify.Text(text)
                for i in range(1):
                  tool = grammar_check.LanguageTool ('en-GB')
                  lin = (text_model.make_sentence(tries=200))
                  matches = tool.check (lin)
                  correct = grammar_check.correct (lin, matches)
                  lowcor = (correct.lower())
                  print ">",
                  print str (lowcor)
                  print ' '
                  f = open("self.txt", "a+")
                  f.write(lowcor + "\n")