繁体   English   中英

write()接受2个位置参数,但给出了3个

[英]write() takes 2 positional arguments but 3 were given

当我使用print()函数在屏幕上打印它们时,我的程序可以正确产生所需的结果:

for k in main_dic.keys():
    s = 0
    print ('stem:', k)
    print ('word forms and frequencies:')
    for w in main_dic[k]:
        print ('%-10s ==> %10d' % (w,word_forms[w]))
        s += word_forms[w]
    print ('stem total frequency:', s)

    print ('------------------------------')

我想将结果以准确的格式写入文本文件。 我尝试了这个:

file = codecs.open('result.txt','a','utf-8')
for k in main_dic.keys():
    file.write('stem:', k)
    file.write('\n')
    file.write('word forms and frequencies:\n')
    for w in main_dic[k]:
        file.write('%-10s ==> %10d' % (w,word_forms[w]))
        file.write('\n')
        s += word_forms[w]
    file.write('stem total frequency:', s)
    file.write('\n')
    file.write('------------------------------\n')
file.close()

但是我得到了错误:

TypeError:write()接受2个位置参数,但给出了3个

print()具有单独的参数, file.write() 不具有 您可以重复使用print()来写入文件:

with open('result.txt', 'a', encoding='utf-8') as outf:
    for k in main_dic:
        s = 0
        print('stem:', k, file=outf)
        print('word forms and frequencies:', file=outf)
        for w in main_dic[k]:
            print('%-10s ==> %10d' % (w,word_forms[w]), file=outf)
            s += word_forms[w]
        print ('stem total frequency:', s, file=outf)
        print ('------------------------------')

我还使用了内置的open() ,无需在Python 3中使用较旧的通用性codecs.open() 。您也不需要调用.keys() ,直接在字典上循环也可以。

file.write只需要一个字符串参数时,会被赋予多个参数

file.write('stem total frequency:', s)
                                  ^

误差以'stem total frequency:', s被视为两个不同的参数。 可以通过串联来解决

file.write('stem total frequency: '+str(s))
                                  ^
file.write('stem:', k)

当只需要一个参数时,您将提供两个参数在该行上write 相比之下, print乐于接受您愿意提供的尽可能多的论据。 尝试:

file.write('stem: ' + str(k))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM