2012-11-05 23 views
-3

我們剛剛開始在CSCI類中使用字符串,但我對最近的任務感到困惑。基本python字符串

給你一個很長的字符串:

"""Justin$Calculus$90$Java$85$Python88$ 
Taylor$Calculus$73$Java$95$Python86$ 
Drew$Calculus$80$Java$75$Python94$ 
""" 

字符串有三條線。它包含三個學生的分數 三門課程。寫一個函數findScore(student, subject)。當 調用功能,如findScore(‘Drew’,’Java’),功能 打印「Drew got 75 of the course Java.」

除了功能findScore(student, subject),你可以寫 等功能。所有功能都在一個程序中。

我會假設我需要將此字符串分配給一個變量,但是我使用一個變量,還是每行使用一個變量?

任何啓動的想法將不勝感激。我是新來的Python,所以忍受着我。另外,$標誌的意義是什麼?

+1

'$'在Python字符串中沒有特殊含義,它只是在此字符串中使用的任意分隔符。 – Junuxx

+1

你到目前爲止有什麼? – SilentGhost

+3

你確定'Python'和相應的分數之間沒有'$'嗎? –

回答

6

看一看str.split。你可以用它來了將一個字符串分解成一個列表:

"foo bar baz".split()  #['foo','bar','baz'] (split on any whitespace) 
"foo$bar$baz".split('$') #['foo','bar','baz'] 

從這裏,它只是一個分裂串入適當的列表中的物質,然後遍歷列表正確挑選出的元素,你需要。

此外,您可以使用str.find來獲取類名的索引和使用上$切片拆分拆分您的字符串存在。這將使它更容易得到特定分數(無需額外的迭代):

s = 'foo$bar$baz' 
s_new = s[s.find('bar'):] #'bar$baz' 
baz = s_new.split('$')[1] 
print baz 
+0

@Tim - 感謝您的編輯。 – mgilson

1

一個方便的方式來讀取,這將是使用csv模塊。它用於逗號分隔值,但您可以更改分隔符並改爲使用$

您需要使用delimiter='$'作爲reader的參數。

+3

他們開始使用string_,Bruno! – SilentGhost

+0

@SilentGhost,是的,你是對的。我想以後可能會有用。 – Bruno

0

店字符串變量,說:使用

strs="""Justin$Calculus$90$Java$85$Python88$ 
Taylor$Calculus$73$Java$95$Python86$ 
Drew$Calculus$80$Java$75$Python94$ 
""" 

遍歷strs.split()一個for循環,即for line in strs.split() (使用strs.split()會返回一個包含所有行的列表,在空白分裂)

現在對於每行使用line.rstrip("$").split('$'),它會返回類似於第一行的內容:

['Justin', 'Calculus', '90', 'Java', '85', 'Python88'] 

rstrip("$")將從行中刪除最右邊的$