2017-10-30 7 views
-1

문장이있는 문자열이 있습니다. 문장에는 8 개의 단어가 있습니다. 제가하려고하는 것은 세 번째, 다섯 번째, 다섯 번째 단어를 문장으로 사용하는 것입니다. 나는 같은 색인을 사용하여 시도했다 :문자열에서 단어 그룹을 어떻게 잡아낼 수 있습니까?

string[3][4][5] 

그러나 이것은 IndexError를 발생시킵니다. 내가 여기서 무엇을 놓치고 있니?

+3

** ** 당신이하고있는 일을 ** 색인 생성 **이라고합니다. ** (2) ** 내가 원하는 것은 ** _ 슬라이싱 _ ** :'page_soup.title.string [3 : 6]이라고합니다. –

+0

'page_soup.title.string'은 단어 목록이라고 가정합니다. 그것은 단지 하나의 큰 문자열 일 가능성이 높습니다. 따라서이 솔루션은 세 번째, 네 번째 및 다섯 번째 문자를 가져옵니다. –

+0

@ JohnGordon 사실,하지만 "단어"라고 말하면 "문자 그룹"을 의미한다고 가정합니다. 반드시 그런 것은 아닙니다. 그는 이미 목록 조각에 대한 용어에 대해 혼란스러워했습니다. 그는 여기서도 똑같이 할 수 있습니다. –

답변

2
# split the title string into words (split by spaces) 
thead_list = page_soup.title.string.split() 

# access elements with index 3, 4, 5 
words = thead_list[3:6] 

을 또는 당신은 단지 세 번째와 다섯 번째 단어를 원한다면 당신이 추출 된 결과로 말을 연결해야하는 경우, thead_list[2]thead_list[4]

를 사용, 다음을 수행하십시오 :

new_title = " ".join(words) # converts ["word1", "word2"] to "word1 word2" 

ab 코드의 한 줄로 다음 단계를 수행하십시오.

thead = " ".join(page_soup.title.string.split()[3:6]) 
+0

코드를 사용할 때 이상한 결과가 나타납니다. 웬일인지, 그것은 모든 단어의 세 번째 단어를 부여 잡는다. 또한, 다음과 같은 내용을 보여줍니다 :'[u'MyThirdWord ']'-'[u']'를 추가하는 것은 내가 원하는 것이 아닙니다. –

+0

@JamesDean : 모든 단어의 세 번째 단어? 또한, 'u'는 실제로 단어의 일부가 아니므로 그것에 대해 걱정하지 마십시오. – omijn

+0

그래, 나도 알아,하지만 내 HTML 페이지에 그것을 인쇄합니다. 왜 그렇게 간단하지 않을까요?'thead = page_soup.title.string.split() [3 : 4]'? –

0

당신이 시도 할 수 있습니다 :

thead = page_soup.title.string 
final_word1, final_word2 = thead.split()[2], thead.split()[4] 
+0

그냥 왜 :'third, fourth, fifth = page_soup.title.string.split() [3 : 6]'? –

+0

또한 해결책이 잘못되었습니다. _ "세 번째, ** 앞의 ** 및 다섯 번째 단어 문장"_. –

+0

@ChristianDean 채팅에서 언급 한 OP 자신이 "나는 세 번째 단어와 다섯 번째 단어를 갖고 싶다." – Ajax1234