2009-11-18 6 views
1

파이썬에서 popen을 통해 무언가를 실행하면 결과는 각 줄의 끝에서 캐리지 리턴 (13)의 CR-LF 십진수 값이있는 버퍼에서 제공됩니다. 파이썬 문자열에서 이것을 어떻게 제거합니까?파이썬 문자열에서 을 제거하십시오.

+0

'b'모드 플래그를 지원하지 않으므로 'r'을 없애 버릴 수있는 바이너리 모드가 켜집니다. – tyranid

+1

바이너리 모드는 \ r을 * 유지합니다. 텍스트 모드로 제거 할 수 있습니다. –

+0

실제로 ''b ''는 ''\ r ''을 유지해야합니다 (지원되는 경우 확인하지 않았습니다). –

답변

4

당신은 단순히

s = s.replace('\r\n', '\n') 

당신이 원하는 것 같다 단지 NL과 CRNL의 모든 항목을 대체 할 수 있습니다. 그들이 문자열 (들)의 끝 부분에있는 경우

+0

또한 CRLF의 후행을 위해 .rstrip ("\ r \ n")을 추가해야합니다. – Superdooperhero

2
buffer = "<text from your subprocess here>\r\n" 
no_cr = buffer.replace("\r\n", "\n") 
2

, 내가 사용하는 제안 :

buffer = "<text from your subprocess here>\r\n" 
no_cr = buffer.rstrip("\r\n") 

또한 rstrip 사용할 수 있습니다()과 공백을 제거합니다 매개 변수없이.

0

사실, 당신은 단순히 다음을 수행 할 수

s = s.strip() 

이것은 선행 또는 문자열을 후행, CR 및 LFS를 포함하여, 불필요한 공백을 제거합니다.

s = s.rstrip() 

동일하지만 문자열 만 추적합니다. 이다

:

s = ' Now is the time for all good... \t\n\r " 
s = s.strip() 

포함 지금 s '이 (가) 이제 모든 좋은 때입니다 ...'

s = s.rstrip() 

의 지금은 이제 '에 포함 된 모든 좋은 때입니다 ... '

자세한 내용은 http://docs.python.org/library/stdtypes.html을 참조하십시오.

0

s = s.replace('\r', '')도 가능합니다.

0

('\ r \ n', '\ n')은 바뀌어야하지만 때로는 그렇지 않습니다. 얼마나 이상한 지. 대신 다음을 사용할 수 있습니다 :

lines = buffer.split('\r') 
cleanbuffer = '' 
for line in lines: cleanbuffer = cleanbuffer + line 
관련 문제