2014-04-24 2 views
-1

나는 트윗 감정 분석을하고 있는데, 지금은 우분투 커맨드 라인에서 perl을 사용하여 데이터를 정리하려고합니다.문자열 시작 부분에서 숫자를 제거하지 않고 숫자가있는 단어를 제거하는 방법은 무엇입니까?

sentiment, 'text' 

sentiment = {0, 4}text is any valid string : 나는 다음과 형식으로 일부 데이터를 가지고있다. 는 지금은 이와 같은 문제가 제거 된 데이터를 보내고 있습니다 :

0,'My 21yo son has finally graduated from college!' 
4,'The NT2000 is an awesome product!' 
4,'what is good88guy doing on my following list?' 

내가 원하는 한 후 다음과 같이하려면 다음

0,'My son has finally graduated from college!' 
4,'The is an awesome product!' 
4,'what is doing on my following list?' 

내가 감정을 제거 할도 내가하지 않습니다 yo을 삭제해야합니다. 이 스크립트를 어떻게 작성할 수 있습니까?

+0

은 "적어도 하나"디지트 들어오는 어떤 단어 강제 추천하려고'S/\ D {1} \ \ w {1} // g''. – Rubens

+0

's/\ d * // g'가'21yo'를'''''' – devnull

+0

죄송합니다. 나는 내 질문을 고쳤다. – dtgee

답변

0

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

s/ ?(|[a-z]+)\d+(|[a-z]+|)? ?/ /simg; 

DEMO 내가 조금 더 문제를 이해 최근 댓글 때문에
http://regex101.com/r/zW2nJ3

+0

내 편집을 보았는지 확실하지 않지만 정규 표현식은 숫자를 제거하지만 숫자가 포함 된 단어는 삭제하지 않습니다. – dtgee

+0

정말 확실합니까? http://regex101.com/r/lN9jS8 –

+0

그래요, 출력에는 여전히 'NT'와 'goodguy'가 있습니다. – dtgee

0

은 다음 원하는 것 같은데 :

s/\w*\d\w*\s*//g; 

당신이있는 거 당신이 "처음부터"제거 일을하지 않으려는 문이 조금 혼란이지만, 당신이 정보를 추가해야합니다 더 나은 대답을 얻으십시오.

원하는 것을 의사 소통하는 가장 쉬운 방법 중 하나는 전후 문자열 목록을 작성하여 각각 특수 사례를 시연하는 것입니다.

+0

당신 말이 맞습니다. 나는 결과 전후에 놓아야 만했다. 내 질문을 명확히하도록 도와 주셔서 감사합니다. – dtgee

+0

또한 방금 스크립트를 사용해 보았습니다. 나는 다음과 같은 것을 가지고있다 : ', '아들은 마침내 대학을 졸업했다.' ' ', '정말 멋진 제품이다.' ' ', '내 목록에 뭐하는거야?' ' – dtgee

+0

나는 업데이트 된 게시물에 지정된 것처럼 공백을 처리하도록 내 정규식을 업데이트했습니다. – Miller

0

.

으로 기술 된 데이터 형식은 Text::CSV을 사용하여 처리해야하므로 인용 된 필드와 쉼표 구분 기호를 고려해야합니다.

이 프로그램은 내가 이해하는 한 귀하의 요구에 맞아야합니다. 입력 파일을 열 수 없으면 핸드 코딩 예외가 필요하지 않으므로 이 있고 Text::CSV은 파일에서 데이터를 읽고 필드 구분 기호로 작은 따옴표를 지정합니다.

필자의 원래 응답 코드를 사용하여 파일의 각 줄을 처리했습니다. 요구 사항을 세분화해야 할 경우 최상의 유연성을 제공합니다.

use strict; 
use warnings; 
use autodie; 

use Text::CSV; 

my $csv_proc = Text::CSV->new({ eol => $/, quote_char => "'" }); 

open my $fh, '<', 'myfile.txt'; 

while (my $row = $csv_proc->getline($fh)) { 
    my @fields = split ' ', $row->[1]; 
    $row->[1] = join ' ', grep { not /\d/ } @fields; 
    $csv_proc->print(*STDOUT, $row); 
} 

출력

0,'My son has finally graduated from college!' 
4,'The is an awesome product!' 
4,'what is doing on my following list?' 
관련 문제