2013-09-29 128 views
0

我將如何使用函數來獲取字符串的特定部分?
舉例來說,我的字符串包含如下數據: '12345678 123456.78 Doe,John D.' #可以代表銀行軟件的數據# 我如何告訴python使字符串的第一個字符爲int,字符串的第二部分爲float,最後一部分應該自動保留字符串的權利?Python函數和字符串

for line in file_obj: 
    print(line) #would yield something like this '12345678 123456.78 Doe, John D.' 

如果我有喜歡的功能:

def find_balance(): 
    return float 

def find_acc_num(): 
    return int 
def find_name(): 
    return str 

什麼將我的參數是什麼?迭代是解決問題的最好方法嗎?只要用戶可以提供正確的帳號,我就希望能夠更改帳戶信息(餘額和姓名)。我是新使用的功能,我有點不確定如何去做這個...

在此先感謝我的任何幫助,我真的很感激它。 = d

回答

5

您可以使用str.split()maxsplit的2:

>>> s = '12345678 123456.78 Doe, John D.' 
>>> 
>>> v = s.split(None, 2) 
>>> int(v[0]), float(v[1]), v[2] 
(12345678, 123456.78, 'Doe, John D.') 
+1

不錯,我不知道有一個maxsplit參數。你每天學習新的東西。 –

1

大概作業,但我無聊

for line in file_obj: 
    #Make a list of parts separated by spaces and new lines 
    #The second argument says to only split up the first two things 
    parts = line.split(None, 2) 
    #Assign each value 
    theint = int(parts[0]) 
    thefloat = float(parts[1]) 
    thestring = parts[3].strip() 

您可以通過傳遞每個爲此在多個函數的函數,如果零件你自找的。

編輯:更改代碼以使用@arshajii建議的最大長度。在字符串的末尾也刪除了換行符。

+0

你不需要在最後做浪費的重新加入,你只需要兩次拆分。 – arshajii

+0

謝謝!很有幫助。快速的問題 - .split()會自動生成一個列表嗎?或者,這只是蟒蛇的方式來表示從字符串分離項目? –

+0

@RobertSchneeberger它自動生成一個列表。在那個代碼中'''line'''是一個字符串,它的方法''split'''返回一個列表,然後存儲到'''parts'''中。 –