0

我想知道是否有一种简单的方法可以将文本文件中的数据添加到 wxPythonwx.ListCtrl并设置它,以便交替行进入三个单独的列。例如,第 1、4、7 和 10 行将添加到第 1 列,第 2、5、8 和 11 行将添加到第 2 列,第 3、6、9 和 12 行将添加到列3……以此类推。我已经使用打开了 .txt 文件 with open("file.txt", 'r') as f: ,然后使用f.readlines()[1]它读取第一行并将其设置为变量a,然后手动将变量添加a到列表中,但我认为必须有一种更有效的方法来做到这一点。

或者,回想起来,是否有另一种方法可以将数据写入 .txt 文件?现在,当用户单击提交按钮时,我正在将三个项目写入文件。这些是应该在三列中显示的项目。现在每个都在文本文件中单独一行,但也许我应该简单地用逗号或其他东西分隔它们?

谢谢你的帮助。

4

1 回答 1

0

如果您想获取列表中的每三个项目,您可以执行 myList[::3]。

例如,

Python 2.7 (r27:82525, Jul  4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a = []
>>> for i in xrange(1,22):
...     a.append(i)
...
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
>>> b = a       # start index of b will be the first item
>>> b = b[::3]
>>> b
[1, 4, 7, 10, 13, 16, 19]
>>> c = a[1:]   # start index of c will be the second item
>>> c = c[::3]
>>> c
[2, 5, 8, 11, 14, 17, 20]
>>> d = a[2:]   # start index of d will be the third item
>>> d = d[::3]
>>> d
[3, 6, 9, 12, 15, 18, 21]

因此,您可以像这样将您的 readlines() 列表拆分为 3 个单独的列表,然后将它们添加到您的 ListCtrl。

Readlines 只返回一个列表,其中列表中的每个项目都是文件中的一行。因此,如果您将文件打开为 f,它看起来像这样,

with open("file.txt", 'r') as f:
    lines = f.readlines()
list1 = lines
list1 = list1[::3]
list2 = lines[1:]
list2 = list2[::3]
list3 = lines[2:]
list3 = list3[::3]

现在list1保持每三行 (0,3,6,9),list2保持 (1,4,7,10) 和list3保持 (2,5,8,11)。

于 2013-03-06T00:10:44.323 回答