3 回答

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以創(chuàng)建一個(gè)生成器(它也會(huì)刪除 EOL 字符,如果您想要不同的東西,您可以刪除rstrip):
def readpairsoflines(f):
l1 = f.readline().rstrip('\n')
for l2 in f:
l2 = l2.rstrip('\n')
yield l1, l2
l1 = l2
并像這樣使用它:
with open(filename) as f:
for l1, l2 in readpairsoflines(f):
# Do something with your pair of lines, for example print them
print(f'{l1} and {l2}')
結(jié)果:
100 and 200
200 and 300
300 and 400
通過(guò)這種方法,僅讀取兩行并將其保存在內(nèi)存中。因此,它也適用于可能需要考慮內(nèi)存問(wèn)題的大文件。

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊
我總是喜歡簡(jiǎn)單易讀的解決方案(盡管有時(shí)不太“Pythonic”)。
with open("example.txt") as f:
old = f.readline().rstrip()
for line in f:
line = line.rstrip()
print("{} and {}".format(old, line))
old = line
在循環(huán)其余行之前執(zhí)行第一次讀取
然后,打印所需的輸出,并old更新字符串
需要調(diào)用 ion命令rstrip()來(lái)刪除不需要的尾隨'\n'
我認(rèn)為如果文件少于兩行,則無(wú)需打印任何內(nèi)容;可以輕松修改代碼以管理特殊情況下的任何需求
輸出:
100 and 200
200 and 300
300 and 400

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊
現(xiàn)在我建議像這樣將文檔分成換行符
with open('params.txt') as file:
data = file.read()
data = data.split('\n')
for index, item in enumerate(data):
try:
print(str(item) + ' ' + str(data[index + 1]))
except IndexError:
print(str(item))
并使用一些列表邏輯打印您需要的內(nèi)容,因此此代碼的作用是創(chuàng)建所需值的列表(對(duì)于非常大的文件效率不高)并獲取它們的索引,因此當(dāng)它打印該項(xiàng)目時(shí),它還會(huì)打印列表中的下一個(gè)項(xiàng)目,并且它對(duì)每個(gè)項(xiàng)目索引錯(cuò)誤執(zhí)行此操作是因?yàn)樽詈笠豁?xiàng)不會(huì)有下一項(xiàng),但您也可以通過(guò)使用 if else 語(yǔ)句來(lái)解決它
添加回答
舉報(bào)