亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

Python:如何從文本中返回特定行

Python:如何從文本中返回特定行

小怪獸愛吃肉 2023-12-20 16:19:01
我是新來的,也是編程新手。我正在閱讀 Jamie Chan 的《一日學習 Python》,目前處于實踐項目部分。我試圖讓 python 從 txt 文件中讀取一行。txt 文件包含一個名稱和一個數字,以逗號分隔,這是文本文件Benny, 102Ann, 100Carol, 214Darren, 129我成功地讓它讀取第一行,但嘗試通過調用那里的名稱來打印第二行,但始終返回零。當我切換行時,會發生同樣的事情,它讀取第一行中的名稱,但在第二個文件中的名稱上返回空。這是我嘗試用來閱讀文本的函數:def getUserPoint(userName):    f = open('userScores.txt', 'r')    for line in f:        result = line.splitlines()        if userName in line:            return result        else:            return "nill"    f.close()s = getUserPoint(input('Ann'))print(s)這是結果:nill說明是這樣的:每一行記錄一個用戶的信息。第一個值是用戶的用戶名,第二個值是用戶的分數。接下來,該函數使用 for 循環逐行讀取文件。然后使用 split() 函數分割每一行 讓我們將 split() 函數的結果存儲在列表內容中。接下來,該函數檢查是否有任何行與作為參數傳入的值具有相同的用戶名。如果存在,該函數將關閉該文件并在該用戶名旁邊返回分數。如果不存在,該函數將關閉文件并返回字符串“-1”對于這篇冗長的帖子我感到非常抱歉。
查看完整描述

4 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

您可以使用 :


def getUserPoint(userName):

  f = open('userScores.txt', 'r')

  for line in f.readlines():

    result = line.splitlines()

    if userName in line:

        f.close()

        return result

  

  f.close()

  return "nill"

  



s = getUserPoint(input('Ann'))

print(s)


查看完整回答
反對 回復 2023-12-20
?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

一個問題是您有一個匹配的 else 語句,它將立即結束函數和循環


查看完所有行后,您需要返回默認結果


def getUserPoint(userName):

    with open('userScores.txt') as f:

        for line in f:

            if userName == line.rstrip().split(',')[0]:

                return line

    return "nill"

然后,如圖所示,您要么想要拆分逗號并檢查第一列,要么userName in line。否則,您正在檢查


'Ann' in ["Ann, 100", ""]

因為splitlines()將在末尾的換行符處分割,返回 False


查看完整回答
反對 回復 2023-12-20
?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

見下文


該代碼負責關閉文件。


如果沒有找到匹配則返回None,否則返回“用戶點”


def get_user_point(user_name):

    with open('userScores.txt', 'r') as f:

      lines = [l.strip() for l in f]

      for line in lines:

        parts = line.split(',')

        if user_name == parts[0]:

          return parts[1]


查看完整回答
反對 回復 2023-12-20
?
MYYA

TA貢獻1868條經驗 獲得超4個贊

def getUserPoint(userName):

    with open('userScores.txt') as f:

        for line in f:

            if userName == line.split(',')[0]:

                return line

    return "nill"

由于我是 Python 和一般編程的新手,我可能會問更多問題。感謝大家的幫助。


查看完整回答
反對 回復 2023-12-20
  • 4 回答
  • 0 關注
  • 254 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號