0

テキスト ファイルから wxPython にデータを追加し、wx.ListCtrl交互の行が 3 つの別々の列に移動するように設定する簡単な方法があるかどうか疑問に思いました。たとえば、行 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 ファイルに書き込む別の方法はありますか? 現在、ユーザーが送信ボタンをクリックすると、3 つの項目がファイルに書き込まれます。これらは、3 つの列に表示されるべき項目です。現在、それぞれがテキスト ファイルの別の行に表示されていますが、カンマなどで区切る必要があるのでしょうか。

助けてくれてありがとう。

4

1 に答える 1

0

リストの項目を 3 つおきに取得したい場合は、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 はリストを返すだけで、リスト内の各項目はファイルの 1 行です。ファイルを 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]

list13 行おきに (0,3,6,9)、list2(1,4,7,10) をlist3保持し、(2,5,8,11)を保持します。

于 2013-03-06T00:10:44.323 に答える