在python中

时间:2016-01-04 17:00:48

标签: python text

我有一个包含数据类型字符串的6个字符串字符的数组,我必须在文本文件中分别在1,16,19,22,51,54位置写入它们,使用python正确读取通过软件。

数组看起来像

[ABCD, 1, P, 15-06-2015, 0, Name of the account]

数组的第一个元素始终是4或5个字母的字符串。 (应从该行的第一个位置或该行的第一列开始) 第二个元素总是一个数字(应该从16开始) 第三个元素总是一个字母表(应该从19开始) 第四个元素是日期(应该从22开始) 第五个元素也是一个数字(应该从51开始) 第六个元素是一个变量字符串,其中包含有关数组的注释(应从54开始)

在第六个元素之后,应该有白色空格直到第134列

如何在python中自动执行此操作,因为我必须同样编写200行。

提前致谢。

2 个答案:

答案 0 :(得分:3)

这可以通过简单的字符串格式化来完成:

arr = ['ABCD', '1', 'P', '15-06-2015', '0', 'Name of the account']
print "{:16}{:3}{:3}{:29}{:3}{:40}".format(*arr)

值没有位置,但每个项目的长度。

修改

如果数组中的项目不仅仅是字符串而且还有数字,它仍然可以使用,但您可能希望它们保持左对齐(默认情况下是字符串):

arr = ['ABCD', 1, 'P', '15-06-2015', 0, 'Name of the account']
print "{:16}{:<3}{:3}{:29}{:<3}{:40}".format(*arr)

此处doc

答案 1 :(得分:0)

我假设你的“数组”是一个numpy数组。如果您所说的数组格式是严格的,那么您应该能够编写如下:

# assume array is called A
with open('filename.txt', 'r') as fid:
    for r in xrange(A.shape[0]):
        A[r].tofile(fid, sep=', ')

如果您的数组真的是一个列表:

with open('filename.txt', 'r') as fid:
    for r in A:
        fid.write( ', '.join(r) )

当然,这取决于你的数组只包含字符串。我理解你说你的数组中有字符串,整数和日期,但我认为你的意思是它们都是字符串。如果不是这种情况,那么你可以通过在循环中包含一个简单的类型转换来纠正这个问题。