我是python中的新手,我有一个正在运行的代码,它从Web服务中提取数据并将其放入列表并将其写入文本文件。当我运行此代码并打开文本文件时,数据是连续的。我需要像文本文件中的每一行一样,它将显示5个元素,并将转到下一行并写下接下来的5个元素,依此类推。希望你可以通过其他方式帮助我解决这个问题或建议。这是代码。
f = open("test.txt", "w")
for item in test:
f.write("%s | " % item)
f.close()
结果如下:
data1, data2, data3, data4, data5, data6, data7, data8......................
应采用以下格式:
data | data2 | data3 | data4 |
data5 | data6 | data7 | data8 |
data9 | data10 | data11 | data12 |
我希望我可以得到你的意见。谢谢!
答案 0 :(得分:3)
这些字符不在列表中, 列表。
>>> print ''.join(['foo', 'bar', 'baz'])
foobarbaz
答案 1 :(得分:1)
正如@Ignacio所说,您需要更改列表的打印方式。
for line in list_s:
# f.write("%s\n" % line)
f.write(''.join(line))
如果您想在表格中显示它,可以像这样格式化每一行:
>>> print '{0:10s} {1:10s} {2:10s}'.format('foo', 'bar', 'baz')
foo bar baz
或用行:
>>> print '{0:10s} | {1:10s} | {2:10s}'.format('foo', 'bar', 'baz')
foo | bar | baz
有关详细信息,请参阅Python Input and Output documentation
答案 2 :(得分:1)
for i, item in enumerate(test):
if i and i % 4 == 0:
f.write("\n")
f.write("%-9s| " % item)
答案 3 :(得分:0)
你叫什么“特殊字符”?您拥有的数据的编码是什么?在继续之前,重要的是你要了解什么是编码,什么是unicode,以及你所得到的数据和数据不仅限于主要用于英语的26个字母。 Check this article了解它。
也就是说,Python可以使用您选择的编码对您的数据进行编码 - 甚至是ASCII,因此您只能获得32-127个字符,而且根本没有“陌生”字符 - 比如ã,ç,É - 或者您可以在utf-8中对您的数据进行编码,以便能够使用我们在地球上使用的整个字符数组。但是,如果你只能“编码”Unicode数据(如果使用编码字符串方法,Python会尝试将字节字符串隐式转换为unicode) - 所以你必须知道数据源的编码。将数据解码为unicode(在正在运行的程序中)后,可以将其编码为所需的输出(例如ASCII或“quopri_codec”),并在调用时将“errors”关键字参数设置为“ignore”或“xmlcharrefreplace”编码。
要更好地理解它,请查看Python中的codecs documentation
例如,假设你的输入数据是在iso8859_15(也就是latin1或cp1252 put或2个char定义)中编写的,那么你真的想要压制任何非英文字符:
s = client.service.GetData('data1')
s = s.decode("iso88159_15").encode("ASCII", errors="ignore")
sr = '<root>%s</root>' % s
root = ET.fromstring(sr)
Otoh,因为您正在编码xml,所以将xml引用放入您不想要的字符 处理不应该伤害 - (因为编码utf-8也不会伤害):
s = s.decode("iso88159_15").encode("ASCII", errors="xmlcharrefreplace")