Tôi có một tệp .txt
và tôi muốn in các dòng 3, 7, 11, 15,...
Vì vậy, sau khi in dòng thứ ba, tôi muốn in mỗi dòng thứ 4 sau đó.
Tôi bắt đầu bằng cách nhìn vào nhà điều hành mô đun:
#Open the file
with open['file.txt'] as file:
#Iterate through lines
for i, line in enumerate[file]:
#Choose every third line in a file
if i % 3 == 0:
print[line]
#Close the file when you're done
file.close[]
Nhưng cách tiếp cận đó in mỗi dòng thứ ba. Nếu i % 3 == 1
in các dòng 1, 4, 7, 10, 13, v.v.
Rahul k p
15.1k4 Huy hiệu vàng34 Huy hiệu bạc51 Huy hiệu Đồng4 gold badges34 silver badges51 bronze badges
Hỏi ngày 13 tháng 9 năm 2018 lúc 6:38Sep 13, 2018 at 6:38
4
Thay vì sử dụng modulo, chỉ cần sử dụng bổ sung, hãy bắt đầu với dòng đầu tiên bạn muốn hiển thị, sau đó thêm 4 vào nó
next_line = 2 # Line 3 is index 2
for i, line in enumerate[file]:
if i == next_line:
print[line]
next_line = next_line + 4
Đã trả lời ngày 13 tháng 9 năm 2018 lúc 6:43Sep 13, 2018 at 6:43
NóiesayseSayse
42K14 Huy hiệu vàng75 Huy hiệu bạc140 Huy hiệu đồng14 gold badges75 silver badges140 bronze badges
Mã của bạn gần như ổn, ngoại trừ modulo: bạn muốn phần còn lại của bộ phận là 4 là 3.
with open['file.txt'] as file:
for i, line in enumerate[file]:
if i % 4 == 3:
print[line]
Lưu ý rằng bạn không cần phải rõ ràng
next_line = 2 # Line 3 is index 2
for i, line in enumerate[file]:
if i == next_line:
print[line]
next_line = next_line + 4
0 Tệp của bạn ở cuối: đó là những gì next_line = 2 # Line 3 is index 2
for i, line in enumerate[file]:
if i == next_line:
print[line]
next_line = next_line + 4
1 dành cho, nó đảm bảo rằng tệp của bạn sẽ bị đóng bất cứ điều gì xảy ra.Đã trả lời ngày 13 tháng 9 năm 2018 lúc 6:56Sep 13, 2018 at 6:56
Thierry Lathuillethierry LathuilleThierry Lathuille
23.1K10 Huy hiệu vàng40 Huy hiệu bạc46 Huy hiệu đồng10 gold badges40 silver badges46 bronze badges
Vì vậy, bạn muốn một cái gì đó xảy ra mỗi lần thứ tư, điều đó có nghĩa là modulo 4. Hãy thử thay đổi IF của bạn thành
next_line = 2 # Line 3 is index 2
for i, line in enumerate[file]:
if i == next_line:
print[line]
next_line = next_line + 4
2 với số lượng tốt cho next_line = 2 # Line 3 is index 2
for i, line in enumerate[file]:
if i == next_line:
print[line]
next_line = next_line + 4
3.Nhân tiện, khi sử dụng câu lệnh
next_line = 2 # Line 3 is index 2
for i, line in enumerate[file]:
if i == next_line:
print[line]
next_line = next_line + 4
1 mà bạn không phải gọi next_line = 2 # Line 3 is index 2
for i, line in enumerate[file]:
if i == next_line:
print[line]
next_line = next_line + 4
5, nó sẽ tự động thực hiện.Đã trả lời ngày 13 tháng 9 năm 2018 lúc 6:42Sep 13, 2018 at 6:42
MOBERGMOBERGMoberg
5.0853 Huy hiệu vàng33 Huy hiệu bạc 50 Huy hiệu Đồng3 gold badges33 silver badges50 bronze badges
Bạn nghĩ thế nào về:
# Fetch all lines from the file
lines = open['20 - Modular OS - lang_en_vs2.srt'].readlines[]
# Print the 3rd line
print[lines[2]]
# throw away the first 3 lines, so the modulo [below] works ok
for i in range[3]:
del[lines[0]]
# print every 4th line after that
for [i in range[len[lines]]:
if [i > 0 and i % 4 == 0]:
print[lines[i]]
Đọc mọi dòng thành một mảng. Đầu ra dòng thứ 3. Sau đó, chúng tôi cần mỗi dòng thứ tư, vì vậy bằng cách xóa 3 yếu tố đầu tiên, thật dễ dàng để kiểm tra đối với Modulo 4 ["% 4"] và xuất dòng.
Đã trả lời ngày 13 tháng 9 năm 2018 lúc 6:45Sep 13, 2018 at 6:45
KingsleykingsKingsley
13.9k5 Huy hiệu vàng31 Huy hiệu bạc51 Huy hiệu Đồng5 gold badges31 silver badges51 bronze badges
3
x = 0
with open['file.txt'] as file:
#Iterate through lines
for i, line in enumerate[file]:
x += 1
#Choose every third line in a file
if x == 4:
print[line]
x = 0
#Close the file when you're done
file.close[]
Kết quả
>>> i = 0
>>> for x in range[0, 100]:
... i += 1
... if i is 4:
... print[x]
... i = 0
3 7 11 15 19 23 27 31 35 39 43 47 51 55 59 63 67 71 75 79 83 87 91 95 99
Đã trả lời ngày 13 tháng 9 năm 2018 lúc 6:50Sep 13, 2018 at 6:50
file = open['file.txt']
print[file[2]]
#Iterate through lines
for i in file:
#Choose every third line in a file, beginning with 4
if i % 4 == 0:
print[i+3]
elif i % 4 == 0:
print[i]
Điều này hoạt động, nhưng không siêu thanh lịch.
Đã trả lời ngày 13 tháng 9 năm 2018 lúc 6:56Sep 13, 2018 at 6:56
Thierry Lathuillethierry LathuilleGuar
23.1K10 Huy hiệu vàng40 Huy hiệu bạc46 Huy hiệu đồng6 bronze badges