2012-11-05 22 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("$")将从行中删除最右边的$