2016-06-29 3 views
1

저는 텍스트 파일을 가지고 있으며 6 개 이상의 단어를 가진 줄을 필터링해야합니다.단어를 줄에 결합하십시오.

line_words = my_data.map(lambda x: x.split(' ')) 

그리고 필터를 적용하고 파일에 결과를 저장 :

filtered_lines = line_words.filter(lambda x: len(x) > 6) 
filtered_lines.saveAsTextFile("out") 

그리고 초기 파일에서 나는 단어의 각 행을 분할 그런

my_data = sc.textFile("lines.txt") 

: 은 내가 RDD를 만들 :

hello world 
its fun to have fun but you have to know how 

내가 얻을 :

[u'its', u'fun', u'to', u'have', u'fun', u'but', u'you', u'have', u'to', u'know', u'how'] 

어떻게 브래킷과 u''없이 라인에 다시 단어를 결합 하는가?

나는 그런 일 할 더 잘 알고 :

my_data.filter(lambda x: len(x.split(' ')) > 6).saveAsTextFile("out") 

을하지만 난 인간에 대한 결과를 읽을 수 있도록하는 방법을 배우고 싶어요.

line = [u'its', u'fun', u'to', u'have', u'fun', u'but', u'you', u'have', u'to', u'know', u'how'] 
sentence = " ".join(line) 

이 당신이 무슨 뜻인가 :

답변

1

당신은 문자열는 구분 기호 문자열로 배열의 요소를 변환 할 문자열 .join (배열) 기능을 사용할 수 있습니까?

+0

내 문장이 RDD이기 때문에'sentence = "".join (line)'을 사용할 때 TypeError가 발생합니다. – lacerated

+1

Sry 프로그래밍에 익숙합니다. 'combined_line = filtered_lines.map (lambda x : "".join (x))'을 사용하려고했는데 성공했습니다! 2 단어를 합치는 기능을 여기에서 줄여야한다고 생각 했어. – lacerated

1

분할을 건너 뛰어도 일부 처리를 저장할 수 없습니까? 필터 단어 수 (예 : 줄의 공백 수) 만 계산합니다.

또는 동일한 필터 단계에서 스플릿과> 6 필터를 수행 할 수 있습니다. 당신이 개별 단어를 사용하지 않기 때문에, 그 데이터 구조를 유지할 필요가 없습니다.

+0

나는 그것을 할 수 있었다. 그게 마지막으로 단일 라인 솔루션을 작성한 이유지만, 내 목표는 나중에 더 복잡한 작업을 사용할 수 있도록 결과를 결합하는 방법을 배우는 것입니다. – lacerated

관련 문제