为什么在将文本写入文件时会得到括号?

时间:2011-06-20 13:23:46

标签: python file file-io

for node in tree.getiterator('TARGET'):
    tgt_name = node.attrib.get('NAME')
    print map_name, ",", "TARGET" , ", " , tgt_name
    tgt_name_str = map_name, ",", "TARGET" , ", " , tgt_name
    writer.writelines (str(tgt_name_str))
    writer.writelines('\n')

以下是输出文件内容:

('m_myname', ',', 'TARGET', ', ', 'mytable')

在上面,括号也写成文本文件的一部分,但我不这样做。知道如何删除这个括号写入文件吗?

5 个答案:

答案 0 :(得分:3)

这一行:

tgt_name_str = map_name, ",", "TARGET" , ", " , tgt_name

创建一个元组,元组的字符串表示括在括号中。要做你想做的事,请使用:

writer.write("{0}, TARGET, {1}\n".format(map_name, tgt_name))

答案 1 :(得分:1)

这是因为当你执行下一行时:

tgt_name_str = map_name, ",", "TARGET" , ", " , tgt_name

tgt_name_str将包含一个元组,因此当您调用str(tgt_name_str)时,它会为您提供带有paranthesis的数据。

要检查这一点,您只需添加带打印类型(tgt_name_str)的语句。

所以要修复它你可以使用join:

tgt_name_str = ''.join([map_name, ",", "TARGET" , ", " , tgt_name])

OR:

for node in tree.getiterator('TARGET'):
    tgt_name = node.attrib.get('NAME')
    writer.writelines (''.join([map_name, ",", "TARGET" , ", " , tgt_name, '\n']))

答案 2 :(得分:0)

因为tgt_name_str = map_name, ",", "TARGET" , ", " , tgt_name是一个元组。

替换为:

tgt_name_str = ''.join([map_name, ",", "TARGET" , ", " , tgt_name])
# or
tgt_name_str = map_name + "," + "TARGET" + ", " + tgt_name

答案 3 :(得分:0)

如果为单个变量分配多个值,如:

tgt_name_str = map_name, ",", "TARGET" , ", " , tgt_name

Python将隐式地将其转换为元组。这相当于写作:

tgt_name_str = (map_name, ",", "TARGET" , ", " , tgt_name)

这就是str(tgt_name_str)提供的内容。

您可能希望连接值:

tgt_name_str = map_name + "," + "TARGET" + ", " + tgt_name

,使用''.join或创建自己的格式模板以获得所需的输出。

答案 4 :(得分:0)

tgt_name_str = map_name, ",", "TARGET" , ", " , tgt_name创建一个元组,其字符串表示形式用括号括起来。

其他人建议''.join([map_name, ",", "TARGET" , ", " , tgt_name]),但您可以', '.join([map_name, "TARGET", tgt_name])。连接将把','放在提供的数组的元素之间。请注意,这可能与您的代码中所需的输出不同,第一个逗号后面没有空格,但是在第二个逗号后面没有空格。这是故意的吗?