第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在python中一次處理文件的一行

如何在python中一次處理文件的一行

湖上湖 2022-07-05 17:55:41
根據(jù)@Boendal 答案編輯。我一直在編寫一個腳本,當(dāng)我認為一切都很好時,結(jié)果卻沒有,我找不到解決方案,甚至找不到我的邏輯為什么不起作用。我對python很陌生,所以如果它很簡單,我很抱歉,但我希望看到它起作用。這是問題所在:我有一個由另一個腳本生成的文本文件,其中包含帶有數(shù)字組合的行,如下所示:(1800, 2100, 2600, 1500, 900, 3700)(1800, 2100, 2600, 900, 800, 3700)(1800, 2100, 1500, 900, 800, 3700)(1800, 2600, 1500, 900, 800, 3700)(1800, 2100, 2600, 1500, 900, 3700)(1800, 2100, 2600, 900, 800, 3700)(1800, 2100, 1500, 900, 800, 3700)(1800, 2100, 2600, 1500, 900, 3700)(1800, 2100, 2600, 900, 800, 3700)(1800, 2600, 1500, 900, 800, 3700)(1800, 2100, 2600, 1500, 900, 3700)(1800, 2100, 1500, 900, 800, 3700)(1800, 2600, 1500, 900, 800, 3700)在另一個使用此文件作為輸入的腳本中,我想逐行處理,處理每一行并移至另一行。我想在完成后刪除一條線(所以我總是在同一條線上工作),但這似乎更復(fù)雜,所以我決定簡單地使用 for 循環(huán)。這是一個代碼:(...)for i, line in enumerate(lines):          i=i+1        line_number = literal_eval(line)        if "1800" in line_number:            cell1800_a = sheet.cell(row=i,column=27)            cell1800_a.value = number            cell1800_b = sheet.cell(row=i,column=29)            cell1800_b.value = number            stf_18 = sheet.cell(row=i,column=50)            stf_18.value = "radio7"            stf18Q = sheet.cell(row=i,column=51)            if number in range (1,2):                stf18Q.value = 1            elif number in range (3,4):                stf18Q.value = 2            elif number in range (5,6):               stf18Q.value = 3            if question1 == "y":                cell1800_2g = sheet.cell(row=i,column=26)                cell1800_2g.value = number基本上我需要做的是打開一個文件,讀取一行并檢查它包含哪些數(shù)字,如果它包含特定數(shù)字,則在 Excel 單元格中輸入一個值并移至下一行。除了實際循環(huán)遍歷這些行之外,一切正常......代碼只讀取一行并將相同的值放入所有單元格中,即使每一行包含不同的數(shù)字組合。如果您能幫我解決它,我將不勝感激,因為我已經(jīng)盯著它看了好幾個小時了,我真的沒有看到它(我很確定這是一個簡單的邏輯錯誤)
查看完整描述

1 回答

?
翻翻過去那場雪

TA貢獻2065條經(jīng)驗 獲得超14個贊

我認為你想要做的是這樣的:


from ast import literal_eval

with open ("numbers.txt") as inFile:

    lines = inFile.readlines()


    for i, line in enumerate(lines,1): #start with 1 because excel row start with index = 1

        line_number = literal_eval(line)

        if 1800 in line_number :

            cell1800_a = sheet.cell(row=i,column=27)

            cell1800_a.value = number

            cell1800_b = sheet.cell(row=i,column=29)

            cell1800_b.value = number


        if 2100 in line_number:

            cell2100_a = sheet.cell(row=i,column=25)

            cell2100_a.value = number


        if 2600 in line_number :

            cell2600 = sheet.cell(row=i,column=30)

            cell2600.value = number


        if 1500 in line_number :

            cell1500 = sheet.cell(row=i,column=34)

            cell1500.value = number


        if 800 in line_number :

            cell800 = sheet.cell(row=i,column=33)

            cell800.value = number


        if 3700 in line_number :

            cell3700 = sheet.cell(row=i,column=40)

            cell3700.value = number

我改變了什么:

  1. 我將輸入字符串評估為一個元組。原因是,例如,如果您在字符串中查找字符串 800,(1800, 2100, 2600, 1500, 900, 3700)您會找到匹配項,因為 1800 中有 800。因此,為了避免這種情況,我對其進行了評估,現(xiàn)在我正在研究一個正確數(shù)字的元組,因此只有當(dāng)數(shù)字 800 在元組中時它才會匹配,而在上面的示例中不是這種情況。

  2. 您有 2 個 for 循環(huán),而第 2 個 for 循環(huán)是不必要的。我認為您希望 txt 文件的每一行都與您的 excel 文件中的行相對應(yīng)。但是使用您的第二個 for 循環(huán),您會覆蓋之前發(fā)生的每個匹配項,在最壞的情況下,您將擁有一個完整的 excel,并且僅針對最后一行評估相同的值?;旧?,您只需為每行寫入一次值,而不是多次。

  3. else部分是不必要的,pass我刪除了它。


查看完整回答
反對 回復(fù) 2022-07-05
  • 1 回答
  • 0 關(guān)注
  • 202 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號