2016-12-05 3 views
0
a = { 
    'a' : [ 
     ('a', '"Folks marched & protested for our right to vote." [email protected]\n', 1477610322, 'TweetDeck', 545, 226), 
     ('a', '"We urge voters to dump Trump" [email protected]', 1476205194, 'TweetDeck', 7165, 2225) 
     ], 
    'b:' : [ 
     ('b:', 'Join me in #Atlanta November 2. Details- #YouIn? #JohnsonWeld\n', 1478034098, 'Hootsuite', 108, 51) 
     ] 
    } 

for key, value in a.items(): 
    for item in value: 
     #extract string beginning with #'s with the user (the users are a and b) 

튜플에서 표시된 사용자로 해시 태그를 추출하려고합니다. 메서드 시작을 알고 있지만 튜플에 사용할 수는 없습니다.항목이 튜플의 심볼로 시작하는지 확인하십시오. 파이썬

+0

'string'은 무엇입니까? 문자열의 임의의 위치에서 태그를 추출해야하는 것처럼 보입니다. 're'모듈이 아마도 최상의 선택 일 것입니다. 're.findall (r '# \ w *', item [1]) ' – AChampion

+0

아무것도 가져올 수 없습니다. –

+0

"다시 가져 오기"를 할 수 없다는 뜻입니까? – bli

답변

1

당신은 split 방법을 사용하여 문자열을 분할 할 수있는 공백에 대한 기본 분할로 :

그런 다음이 해시 태그 인 경우 지능형리스트에서 확인하기 위해 각각의 결과 요소에 startswith을 사용할 수 있습니다
s = 'Join me in #Atlanta November 2. Details- #YouIn? #JohnsonWeld\n' 
s.split() 
# ['Join', 'me', 'in', '#Atlanta', 'November', '2.', 'Details-', '#YouIn?', '#JohnsonWeld'] 

:

[tag for tag in s.split() if tag.startswith("#")] 
# ['#Atlanta', '#YouIn?', '#JohnsonWeld'] 

당신은 더 읽을 수있는 코드하는 기능이 캡슐화 할 수 있습니다

def get_hashtags_from_string(s): 
    return [tag for tag in s.split() if tag.startswith("#")] 
+0

하지만 튜플이 있습니다. –

+0

원하는 튜플의 요소에 함수를 적용 할 수 있습니다. 해시 태그가 두 번째 요소에 존재할 것으로 기대한다면 :'get_hashtags_from_string (item [1])'(파이썬 색인 생성은 0 기반이라는 것을 기억하자. – bli

+0

''b ', []'와 같은 요소를 없애고 싶다면 hashtags의리스트가 비어있는지를 테스트 한 후'author'리스트에 추가하기로 결정할 수 있습니다. – bli