2

テキストファイルの特定の行を読み取り、要素をリストに保存したい。

私のテキストファイルは次のようになります

'item1' 'item2' 'item3'

私は常にすべての文字を要素として含むリストになります

私が試したこと

line = file.readline()
        for u in line:
            #do something
4

6 に答える 6

3

行をスペースで分割してから、リストに追加します。

# line = ('item1' 'item2' 'item3') example of line
listed = []
line = file.readline()
for u in line.split(' '):
    listed.append(u)

for e in listed:
    print(e)
于 2013-02-21T15:36:31.243 に答える
3
line = file.readline()
for u in line.split():
    # do stuff

これは、アイテムが空白で分割されていることを前提としています。

于 2013-02-21T15:24:10.323 に答える
2

そこにあるものは、1行全体を読み取り、その行にあった各文字をループします。おそらくやりたいことは、その行を 3 つの項目に分割することです。それらがスペースで区切られている場合、これを行うことができます:

line = file.readline()      # Read the line in as before
singles = line.split(' ')   # Split the line wherever there are spaces found. You can choose any character though
for item in singles:        # Loop through all items, in your example there will be 3
    #Do something           

ここでは、一緒に使用されるさまざまな関数を並べることで行 (および変数) の数を減らすことができますが、理解を容易にするためにそれらを分けておきました。

于 2013-02-21T15:25:16.347 に答える
1

あなたが試すことができます:

for u in line.split():

これは、各項目の間に空白があることを前提としています。それ以外の場合は、単純に astrを反復して、文字ごとに反復します。

あなたもやりたいかもしれません:

u = u.strip('\'')

を取り除くために'

于 2013-02-21T15:27:38.120 に答える
1

私は を使用withし、re基本的にアポストロフィの間は何でも取ります... (これは、内部にスペースがある文字列に対して機能します (例: item 1 item 2、明らかにネストされたまたは文字列のエスケープシーケンスはキャッチされません)。

import re

with open('somefile') as fin:
    print re.findall("'(.*?)'", next(fin))
    # ['item1', 'item2', 'item3']
于 2013-02-21T15:30:48.530 に答える
0

リスト内の行のすべての文字が必要な場合は、これを試すことができます。

これは二重リスト内包表記を使用します。

with open('stackoverflow.txt', 'r') as file:
    charlist = [c for word in file.readline().split(' ') for c in word ]
    print(charlist)

一部の文字を取り除きたい場合は、たとえばフィルターを適用できます。リストに char = ' を入れたくありません。

with open('stackoverflow.txt', 'r') as file:
    charlist = [c for word in file.readline().split(' ') for c in word if(c != "'")]
    print(charlist)

この二重リスト内包表記が奇妙に見える場合は、これと同じです。

with open('stackoverflow.txt', 'r') as file:
    charlist = []
    line = file.readline()
    for word in line.split(' '):
        for c in word:
            if(c != "'"):
                charlist.append(c)

    print(charlist)
于 2017-10-25T10:16:17.353 に答える