2012-11-23 4 views
0

문자열이 있고 공백을 포함하는 단어를 반환하려면 어떻게해야합니까?공백을 포함하는 Python line.split

예를 들어, 내가 가진 :

line = 'This is a group of words that include #this and @that but not ME ME' 

response = [ word for word in line.split() if word.startswith("#") or word.startswith('@') or word.startswith('ME ')] 

print response ['#this', '@that', 'ME'] 

가 ME 그래서 ME 때문에 공백으로 인쇄되지 않습니다.

감사 파이썬 문서에서

+0

실제 원하는 출력은 무엇입니까? – mgilson

+2

ME ME가 두 단어가 아닌 공백을 포함하는 한 단어인지 어떻게 알 수 있습니까? (단어는 어떻게 공백을 포함 할 수 있습니까?) –

+0

ME ME는 단어가 아니라 접두사 (ME)이고 그 다음에 단어 (ME)를 공백으로 나타냅니다. 나는 모든 것을 고르는 프로그램을 원한다. 더 명확하지 않은 것에 대해 사과드립니다. – user94628

답변

1

당신은 간단하게 수 :

line = 'This is a group of words that include #this and @that but not ME ME' 

words = line.split() 

result = [] 

pos = 0 
try: 
    while True: 
     if words[pos].startswith(('#', '@')): 
      result.append(words[pos]) 
      pos += 1 
     elif words[pos] == 'ME': 
      result.append('ME ' + words[pos + 1]) 
      pos += 2 
     else: 
      pos += 1 
except IndexError: 
    pass 

print result 

속도에 대한 생각이 너무 느린 것으로 판명 경우에만 연습.

1

:

사항 String.split (들 [9 월 [, maxsplit]]) : 문자열의의 단어의리스트를 돌려줍니다. 두 번째 옵션 인 인수 sep가 없거나 없음 인 경우 단어는 임의의 공백 문자 문자열 (공백, 탭, 줄 바꿈, return, formfeed)로 구분됩니다.

오류가 먼저 전화를 겁니다.

인쇄 line.split() 는 [ '이', '중', 'A', '그룹'입니다 ","워드 ","그 ","포함 ',' ',' ','#이와 ','@that ','하지만 ','ME ','ME '] I가 re을 사용하는 것이 좋습니다

문자열을 나눕니다. re.split를 사용 (패턴, 문자열, maxsplit = 0, 플래그 = 0)

관련 문제