Hướng dẫn read two files line by line python - đọc hai tệp theo từng dòng python

Tôi có hai tệp văn bản bằng hai ngôn ngữ khác nhau và chúng được căn chỉnh theo từng dòng. I E. Dòng đầu tiên trong TextFile1 tương ứng với dòng đầu tiên trong TextFile2, v.v.

Có cách nào để đọc đồng thời cả hai dòng tệp không?

Dưới đây là một mẫu về cách các tệp sẽ trông như thế nào, hãy tưởng tượng số lượng dòng trên mỗi tệp là khoảng 1.000.000.

textfile1:

This is a the first line in English
This is a the 2nd line in English
This is a the third line in English

textfile2:

C'est la première ligne en Français
C'est la deuxième ligne en Français
C'est la troisième ligne en Français

kết quả mong muốn

This is a the first line in English\tC'est la première ligne en Français
This is a the 2nd line in English\tC'est la deuxième ligne en Français
This is a the third line in English\tC'est la troisième ligne en Français

Có một phiên bản Java của hai dòng TextFile này từng dòng -Java, nhưng Python không sử dụng BufferedReaderer đọc từng dòng. Vậy nó sẽ được thực hiện như thế nào?

mkrieger1

16.1k4 Huy hiệu vàng50 Huy hiệu bạc58 Huy hiệu đồng4 gold badges50 silver badges58 bronze badges

hỏi ngày 2 tháng 7 năm 2012 lúc 13:56Jul 2, 2012 at 13:56

2

    with open["textfile1"] as textfile1, open["textfile2"] as textfile2: 
        for x, y in izip[textfile1, textfile2]:
            x = x.strip[]
            y = y.strip[]
            print[f"{x}\t{y}"]

Trong Python 2, thay thế zip tích hợp bằng

C'est la première ligne en Français
C'est la deuxième ligne en Français
C'est la troisième ligne en Français
0:

    from itertools import izip

    with open["textfile1"] as textfile1, open["textfile2"] as textfile2: 
        for x, y in izip[textfile1, textfile2]:
            x = x.strip[]
            y = y.strip[]
            print["{0}\t{1}".format[x, y]]

Alvas

109K101 Huy hiệu vàng424 Huy hiệu bạc697 Huy hiệu Đồng101 gold badges424 silver badges697 bronze badges

Đã trả lời ngày 2 tháng 7 năm 2012 lúc 14:00Jul 2, 2012 at 14:00

Fred Foofred FooFred Foo

348K74 Huy hiệu vàng726 Huy hiệu bạc824 Huy hiệu đồng74 gold badges726 silver badges824 bronze badges

2

with open[file1] as f1, open[fil2] as f2:
  for x, y in zip[f1, f2]:
     print["{0}\t{1}".format[x.strip[], y.strip[]]]

output:

This is a the first line in English C'est la première ligne en Français
This is a the 2nd line in English   C'est la deuxième ligne en Français
This is a the third line in English C'est la troisième ligne en Français

Đã trả lời ngày 2 tháng 7 năm 2012 lúc 14:00Jul 2, 2012 at 14:00

Fred Foofred FooAshwini Chaudhary

348K74 Huy hiệu vàng726 Huy hiệu bạc824 Huy hiệu đồng56 gold badges451 silver badges499 bronze badges

2

Ashwini Chaudharyashwini Chaudhary

filenames = ['textfile1', 'textfile2']

def gen_line[filename]:
    with open[filename] as f:
        for line in f:
            yield line.strip[]

gens = [gen_line[n] for n in filenames]

for file1_line, file2_line in zip[*gens]:
    print["\t".join[[file1_line, file2_line]]]

Note:

  1. 238K56 Huy hiệu vàng451 Huy hiệu bạc499 Huy hiệu Đồng
  2. Chúng tôi có thể sử dụng
    C'est la première ligne en Français
    C'est la deuxième ligne en Français
    C'est la troisième ligne en Français
    
    1 để mở tệp thuận tiện hơn và nó có thể dễ dàng hỗ trợ cho iterator trên nhiều tệp hơn.

Đây là mã

C'est la première ligne en Français
C'est la deuxième ligne en Français
C'est la troisième ligne en Français
2. Đối với
C'est la première ligne en Français
C'est la deuxième ligne en Français
C'est la troisième ligne en Français
3, hãy sử dụng
C'est la première ligne en Français
C'est la deuxième ligne en Français
C'est la troisième ligne en Français
0 như những người khác đã nói.May 23, 2019 at 4:11

zip sẽ dừng sau khi tệp ngắn nhất được lặp lại, sử dụng

C'est la première ligne en Français
C'est la deuxième ligne en Français
C'est la troisième ligne en Français
6 nếu nó quan trọng.YU Chang

Đã trả lời ngày 23 tháng 5 năm 2019 lúc 4:112 silver badges6 bronze badges

Yu Changyu Chang

1482 Huy hiệu bạc6 Huy hiệu đồng

from itertools import izip
fileA = open["/path/to/file1"]
fileB = open["/path/to/file2"]
for lineA, lineB in izip[fileA, fileB]:
    print "%s\t%s" % [lineA.rstrip[], lineB.rstrip[]]

Python cho phép bạn đọc từng dòng và thậm chí đó là hành vi mặc định - bạn chỉ lặp lại trong tệp như sẽ lặp lại trong danh sách.Jul 2, 2012 at 14:03

Bài Viết Liên Quan

Chủ Đề