首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:无法打印要文件的5个列表的元组

Python:无法打印要文件的5个列表的元组
EN

Stack Overflow用户
提问于 2016-01-11 09:57:50
回答 3查看 106关注 0票数 2

我试图在Python中将5个列表的元组打印到一个文件中,但是,我得到了错误:

代码语言:javascript
复制
TypeError: Can't convert 'tuple' object to str implicitly

以下是我的代码:

代码语言:javascript
复制
def listjoin():
illegallist = zip(carreglist, illegalspeed, illegaltime, illegalname, illegaladdress)
for item in illegallist:
    illegaldatafile.write("Registration: "+item)
    illegaldatafile.write("\n")
    illegaldatafile.write("Speed "+item)
    illegaldatafile.write("\n")
    illegaldatafile.write("Time: "+item)
    illegaldatafile.write("\n")
    illegaldatafile.write("Name: "+item)
    illegaldatafile.write("\n")
    illegaldatafile.write("Address: "+item)
    illegaldatafile.write("\n")
    illegaldatafile.write("\n")
    illegaldatafile.close()

我想得到这样的东西:

代码语言:javascript
复制
Registration: BH34JKX
Speed: 80
Time: 6:45:21
Name: John Adams
Address: SW34 7MN

Registration: DX34JKS

等等。(不小心发布得太早)

我在前面的代码中将一个列表打印到一个文件中,它不需要转换为字符串。我不能这么做:

代码语言:javascript
复制
illegallist = zip(str(carreglist, illegalspeed, illegaltime, illegalname, illegaladdress))

因为str()只接受3个参数。我试过把它放在这里:

代码语言:javascript
复制
illegallist = str(zip(carreglist, illegalspeed, illegaltime, illegalname, illegaladdress))

但它只是说我的文件被关闭了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-11 10:04:03

与其简单地调用每个循环迭代的项( item ),不如将其解压缩,以便更容易地引用每个对象。字符串格式设置也会有帮助:

代码语言:javascript
复制
def listjoin():
    illegallist = zip(carreglist, illegalspeed, illegaltime, illegalname, illegaladdress)
    for reg,speed,timing,name,address in illegallist:
        illegaldatafile.write("Registration: {}\n".format(reg))
        illegaldatafile.write("Speed: {}\n".format(speed))
        illegaldatafile.write("Time: {}\n".format(timing))
        illegaldatafile.write("Name: {}\n".format(name))
        illegaldatafile.write("Address: {}\n\n".format(address))
    illegaldatafile.close()
票数 5
EN

Stack Overflow用户

发布于 2016-01-11 10:02:21

您正在将相同的元组item一遍又一遍地附加到字符串中。您必须从这个元组中提取单独的元素。这是我(更紧凑)的建议:

代码语言:javascript
复制
colnames = ['Registration', 'Speed', 'Time', 'Name', 'Address']
for tup in zip(carreglist, illegalspeed, illegaltime, illegalname, illegaladdress):
    for colname, value in zip(colnames, tup):
        illegaldatafile.write('{}: {}\n'.format(colname, value))
    illegaldatafile.write('\n')
票数 5
EN

Stack Overflow用户

发布于 2016-01-11 10:14:59

可以在print参数中使用file语句,如果只有5个元组,则可以使用%

代码语言:javascript
复制
def listjoin():
    illegallist = zip(carreglist, illegalspeed, illegaltime, illegalname, illegaladdress)
    for item in illegallist:
        print("Registration: %s" % item[0], file=illegaldatafile)
        print("Speed: %s" % item[1], file=illegaldatafile)
        print("Time: %s" % item[2], file=illegaldatafile)
        print("Name: %s" % item[3], file=illegaldatafile)
        print("Address: %s" % item[4], file=illegaldatafile)
        print(file=illegaldatafile)
    illegaldatafile.close()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34718554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档