0

こんにちは私は一度に8行のPythonでファイルを読み取り、現在の8行をstr変数として使用しようとしています。

しかし、私はこれを正しく行うことができず、助けていただければ幸いです

with open("test.txt", 'r') as infile:
    lines_gen = islice(infile, 8)
    for lines in lines_gen:
        firstname = str(lines[0])
        lastname = str(lines[1])
        email = str(lines[2])

..。

どうすればこれを達成できますか

*乾杯

そして、助けを求める

4

5 に答える 5

3

ある時間パターンで通常のn個を使用する

from itertools import izip

with open("test.txt") as f:
    line_gen = izip(*[f]*8)
    for lines in line_gen:
        print lines
        firstname, lastname, email, fourth, fifth, sixth, seventh, eighth = lines
        ...
于 2012-12-17T06:26:04.583 に答える
2

itertools.isliceを使用した簡単な実装

from itertools import islice
with open("test.txt") as fin:
    try:
        while True:
            data =  islice(fin, 0, 8)

            firstname = next(data)
            lastname = next(data)
            email = next(data)
            #.....
    except StopIteration:
        pass

より良いよりpythonicな実装

>>> from collections import namedtuple
>>> from itertools import islice
>>> records = namedtuple('record',
                  ('firstname','lastname','email' #, .....
               ))
>>> with open("test.txt") as fin:
    try:
        while True:
            data =  islice(fin, 0, 3)

            data = record(*data)
            print data.firstname, data.lastname, data.email #.......
    except (StopIteration, TypeError):
        pass
于 2012-12-17T06:17:00.393 に答える
1

これはどう :-

with open("test.txt", 'r') as infile:
    lines_gen = infile.readlines()
    for i in range(0, len(lines_gen), 8):
        (firstname, lastname, email, etc1, ..) = lines_gen[i:i+8]

テストされていません

于 2012-12-17T06:16:08.677 に答える
0

これを試して:

every_eight = []
lines = open('test.txt').readlines()
j = 0
for n in range(0, len(lines) +1, 8):
    every_eight.append(''.join([lines[l] for l in range(j, n)]))
    j = n

ちなみに、大量の人などの大量入力を受け入れようとしている場合は、次のようなリストで辞書を使用してみてください。

info = []

every_eight = []
lines = open('test.txt').readlines()
j = 0
for n in range(0, len(lines) +1, 8):
    every_eight.append([lines[l] for l in range(j, n)])
    j = n

for setinf in every_eight:
    if len(setinf) == 8:
        info.append({
                'firstname': setinf[0],
                'lastname' : setinf[1],
                'email'    : setinf[2],
            })

for inf in info:
    print inf
于 2012-12-17T06:27:39.850 に答える
0
with open("test.txt", 'r') as infile:
    it = iter(infile)
    while True:
        lines_list = []
        try:
            for i in range(8):
                lines_list.append(next(it))
        except StopIteration:
            if len(lines_list) == 0:
                break
        for eight_lines in lines_list:
            # Do something with eight_lines[0:8]
于 2012-12-17T06:33:09.187 に答える