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')
在上面,括号也写成文本文件的一部分,但我不这样做。知道如何删除这个括号写入文件吗?
答案 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])
。连接将把','放在提供的数组的元素之间。请注意,这可能与您的代码中所需的输出不同,第一个逗号后面没有空格,但是在第二个逗号后面没有空格。这是故意的吗?