2012-11-22 4 views
2

I는 상기 제 1 출력이정규식 파이썬 제대로 작동하지

ERROR: [u'\r\n 212\r\n jobs containing php in xxxx \r\n ']

다른 출력

jobs containing php in xxxxxx

정규식 또한 함께 212 숫자 스트리핑 임

site = hxs.select("//h1[@class='state']") 
mydata = site.select("string()").extract() 
cleaned_mydata = re.sub(ur'(\s)\s+', ur'\1', mydata[0], flags=re.MULTILINE + re.UNICODE) 

     log.msg(str(mydata),level=log.ERROR) 
     log.msg(str(cleaned_mydata),level=log.ERROR) 

코드를 가지고 . 어떻게 해결할 수 있습니까

+0

를 사용할 수 있습니까? – npinti

+0

둘 이상의 공백과 끝 줄을 삭제하려고합니다. 나는 인터넷에서 이것을 복사했는데, 정확하게 무엇을하는지 모르겠다. – user825904

+2

테스트로서, 'url \ 1'이 아닌 'XYZ'대신에 무엇인가 보이는 것으로 대체하지 않겠는가? 정규식을 실행하기 전에 \ r \ n을 제거하지 않으시겠습니까? 또한 플래그를 사용할 때 = 함께 사용하거나 추가하지 말아야합니다. – fileoffset

답변

1

문제는이 정규식은 발견 된 첫 번째 공백을 남기고 후속 공백 만 제거한다는 것입니다.

이 다음 있도록

u'\r\n 212\r\n jobs containing php in xxxx \r\n ' 

u'\r212\rjobs containing php in xxxx ' 

이 인쇄

에서, 212 다음 캐리지 리턴이 첫 번째 열에 커서를 반환합니다 인쇄됩니다됩니다 것을 의미합니다 jobs...212을 덮어 씁니다.

  • 당신은 바이너리 모드에서 텍스트 파일을 읽는 것으로 나타 (그렇지 않으면 \r\n\n의에 정규화 된 것) - 이유 :

    이 두 가지 질문을 제기?

  • 정규식을 이런 방식으로 사용 하시겠습니까?

편집 :

그래서, 당신의 의견에 따라, 당신은
  • 스트립 선행 및 후행 공백 완전히 하나의 공간으로
  • 응축 연속 된 여러 공백 문자
  • (ASCII

    원하는

    32).

그런 다음 일치시켜야 할 어떤

cleaned_mydata = re.sub(r'\s+', ' ', mydata[0].strip()) 
+0

나는 치료법으로 웹 사이트를 폐기하고 거기에서 사용하고 있습니다. 나는 그것이 왜 그렇게 나타나는지 모르겠다. 나는 단지 비어있는 공백을 제거하고 \ r \ n – user825904

+0

@ user32 : 더 구체적으로 말하십시오. * 정확하게 * 삭제 하시겠습니까? 나는 당신이 당신의 결과를'212jobscontainingphpinxxxx'라고 생각하지 않는다. –

+0

나는 그 결과가'xxx에 php를 포함하는 212 개의 작업 '이되기를 원한다. – user825904