【问题标题】:A simple way to add alternating lines of .txt file to a wx.ListCtrl?将交替行的 .txt 文件添加到 wx.ListCtrl 的简单方法?
【发布时间】:2013-03-05 22:13:44
【问题描述】:

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

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

感谢您的帮助。

【问题讨论】:

    标签: python wxpython listctrl


    【解决方案1】:

    如果您想获取列表中的每三个项目,您可以执行 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)。

    【讨论】:

    • 啊,那么我在readlines() 函数中究竟引用了什么?我尝试使用a列表,然后使用b=b[::3],然后在readlines(b)中使用b,但它给了我一个类型错误。
    • 等等,我重读了一遍,明白了你的意思。太棒了,像魅力一样工作。谢谢。
    • Readlines 只返回一个列表,其中列表中的每个项目都是文件中的一行。我用新代码编辑了我的原始帖子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2015-07-11
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    相关资源
    最近更新 更多