2012-11-05 3 views
-3

방금 ​​CSCI 클래스에서 문자열 작업을 시작했지만 최근 과제와 혼동스러워합니다.기본 파이썬 문자열

당신은 긴 문자열이 제공됩니다 :

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

문자열은 세 줄이 있습니다. 여기에는 3 개의 학생들이 수강 한 의 3 과목이 포함되어 있습니다. 함수 findScore(student, subject)을 작성하십시오. 때이 함수 인쇄 기능 findScore(student, subject) 외에도 “Drew got 75 of the course Java.”

findScore(‘Drew’,’Java’)로 함수를 호출 , 당신은 다른 기능을 쓸 수 있습니다. 모든 기능은 하나의 프로그램 안에 있습니다.

변수에이 문자열을 할당해야한다고 가정하지만 변수 하나 또는 각 줄마다 하나씩 사용합니까?

시작 아이디어가 있으면 크게 감사하겠습니다. 나는 파이썬에 익숙해서 나와 함께 곰. 또한, $ 표지판의 의미는 무엇입니까?

+1

'$'는 파이썬 문자열에서 특별한 의미가 없으며이 문자열에서 사용되는 임의의 구분자입니다. – 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를 사용할 수 있습니다. 즉, 쉽게 (추가 반복없이) 특정 점수를 얻을 수 있도록 할 다음 csv 모듈을 사용하는 것이 읽을 수

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

@Tim - 편집 해 주셔서 감사합니다. – mgilson

1

편리한 방법입니다. 쉼표로 구분 된 값을위한 것이지만 구분 기호를 변경하고 $을 대신 사용할 수 있습니다.

reader의 인수로 delimiter='$'을 사용해야합니다. 변수에

+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 line in strs.split() 지금

(공백에서 분할 할 모든 행을 포함하는 목록을 반환합니다 strs.split() 사용) 각 줄에 대해 line.rstrip("$").split('$')을 사용하면 첫 번째 줄에 다음과 같이 표시됩니다.

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

rstrip("$")은 오른쪽에서 $을 제거합니다.