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')
在上面的内容中,括号也是作为文本文件的一部分编写的,但我不这么认为。你知道如何删除写在文件中的括号吗?
此行:
tgt_name_str = map_name, ",", "TARGET" , ", " , tgt_name
创建一个元组,元组的字符串表示形式包含在括号中。要做你想做的事,使用这个:
writer.write("{0}, TARGET, {1}n".format(map_name, tgt_name))
这是因为当您执行下一行时:
tgt_name_str = map_name, ",", "TARGET" , ", " , tgt_name
tgt_name_str将包含一个元组,因此当您调用str(tgt_name-str(时,它会为您提供带有paranthesign的数据。
要检查这一点,您可以简单地添加打印类型为(tgt_name_str(的语句。
所以要修复它,你可以使用join:
tgt_name_str = ''.join([map_name, ",", "TARGET" , ", " , tgt_name])
或:
for node in tree.getiterator('TARGET'):
tgt_name = node.attrib.get('NAME')
writer.writelines (''.join([map_name, ",", "TARGET" , ", " , tgt_name, 'n']))
因为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
如果将多个值分配给单个变量,如:
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或创建自己的格式模板来获得所需的输出。
tgt_name_str = map_name, ",", "TARGET" , ", " , tgt_name
创建一个元组,其字符串表示形式用括号括起来。
其他人建议使用''.join([map_name, ",", "TARGET" , ", " , tgt_name])
,但您可以使用', '.join([map_name, "TARGET", tgt_name])
。联接将把","放在所提供数组的元素之间。请注意,这可能与您想要的输出不同,因为在您的代码中,第一个逗号后面没有空格,但第二个逗号后面有空格。这是故意的吗?