テキストファイルの特定の行を読み取り、要素をリストに保存したい。
私のテキストファイルは次のようになります
'item1' 'item2' 'item3'
私は常にすべての文字を要素として含むリストになります
私が試したこと
line = file.readline()
for u in line:
#do something
テキストファイルの特定の行を読み取り、要素をリストに保存したい。
私のテキストファイルは次のようになります
'item1' 'item2' 'item3'
私は常にすべての文字を要素として含むリストになります
私が試したこと
line = file.readline()
for u in line:
#do something
行をスペースで分割してから、リストに追加します。
# 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)
line = file.readline()
for u in line.split():
# do stuff
これは、アイテムが空白で分割されていることを前提としています。
そこにあるものは、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
ここでは、一緒に使用されるさまざまな関数を並べることで行 (および変数) の数を減らすことができますが、理解を容易にするためにそれらを分けておきました。
あなたが試すことができます:
for u in line.split():
これは、各項目の間に空白があることを前提としています。それ以外の場合は、単純に astr
を反復して、文字ごとに反復します。
あなたもやりたいかもしれません:
u = u.strip('\'')
を取り除くために'
私は を使用with
し、re
基本的にアポストロフィの間は何でも取ります... (これは、内部にスペースがある文字列に対して機能します (例: item 1
item 2
、明らかにネストされたまたは文字列のエスケープシーケンスはキャッチされません)。
import re
with open('somefile') as fin:
print re.findall("'(.*?)'", next(fin))
# ['item1', 'item2', 'item3']
リスト内の行のすべての文字が必要な場合は、これを試すことができます。
これは二重リスト内包表記を使用します。
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)