2013-02-19 2 views
1

필자는 Python (v2.7.3 사용)에 비교적 익숙하며 휴대 전화에서받은 모든 텍스트로 구성된 텍스트 문서를 편집하여 기술을 테스트하기로 결정했습니다. 쓸모없는 정보를 편집하여 스크립트를 작성하려고하지만 단어 사이의 모든 공백이 삭제됩니다. = "932"주소 = "XXXXXXXXXX"날짜 = "1305655717379"유형 = "1"제목 = "null이"몸이 = "조이 이야기파이썬에서 문자열 안에 공백을 추가 하시겠습니까?

SMS 프로토콜 : 여기

는 입력 데이터의 샘플입니다 ? " "0"date_sent = "null"readable_date = "2011 년 5 월 17 일 2:08:37 PM" CONTACT_NAME = "데이비드 XXXX"/>

여기 출력 데이터의 샘플입니다 :

몸 = "Talktojoey"토아 = "null이"sc_toa = "null이"service_center = "널 (null)이"읽기 = "1"상태 = "- 1"잠겨 = "0"date_sent = "null이"readable_date = "May17,20112 : 08 : 37PM"CONTACT_NAME = "DavidXXXX /> 다음

내 코드입니다 :

line= textfile.readline() 
for line in textfile: 

    line = line.strip() 
    line = line.split(' ')  
    del line[0:6] 
    line.append("\n") 
    print line 
    output.writelines(line) 

textfile.close() 

output.close() 

공백을 추가하는 방법에 대한 도움을 주시면 매우 감사하겠습니다. 감사! 은 조각으로 분리 될 때

+0

= 라인 [7]' – Amelia

+0

@Hiroto : 나쁜 조언하지만, 어떻게 자신의 문제에 관련이? – abarnert

+0

@abarnet 아니지만, 나는 단지 질질 거리고 있었고, 그는 파이썬에 대해 처음이라 말한다. – Amelia

답변

1

이 비트 ...

line = line.split(' ')  

의 공간을 제거한다. 당신은 그들을 다시 추가해야합니다 :

line = line.split(' ')  
del line[0:6] 
line = ' '.join(line) 
line += "\n" 
print line, 
output.write(line) 
+0

이것은 작동하지 않습니다. 우선,'line.append'에'AttributeError'를 얻습니다. – abarnert

+0

감사합니다 앰버, 매력처럼 일했습니다! –

0

여기서 문제는 output.writelines(line)를 호출하고 있다는 점이다.

문자열 목록이 주어지면 어떻게해야 할 지 잘 모르겠지만 그 사이에 공백이있는 단어로 인쇄 할 수는 없습니다. 그 단어는 별도의 줄이 아니므로 그런 식으로 싶지는 않습니다.

그래서 단어 목록을 한 줄로 묶고 공백을 사용하여 단어를 구분하는 방법은 무엇입니까? join 방법 사용 : 대신 (여러 줄 것으로 예상) writelines를 사용하는

' '.join(line) 

을 그리고, 단지 write를 사용

output.write(' '.join(line)) 

이 (writewritelines 사이의 차이를 Input and Output에 자습서를 참조하십시오 다른 것들).

+0

도움을 주셔서 감사합니다. 먼저 output.write를 사용했지만 버퍼 오류가 발생했습니다. 어떤 이유로 든 output.writelines가 오류를 발생시키지 않았으므로 함께 실행했습니다. 당신의 제안은 매력처럼 작용했습니다. 감사합니다. –

2

데이터 라인을 면밀히 살펴보면 xml의 일부분 인 '<'이 누락 된 것을 볼 수 있습니다. '<'을 추가하면 'sms'xml 요소가 생깁니다.

>>> input = '<sms protocol="932" address="XXXXXXXXXX" date="1305655717379" type="1" subject="null" body="Talk to joey?" toa="null" sc_toa="null" service_center="null" read="1" status="-1" locked="0" date_sent="null" readable_date="May 17, 2011 2:08:37 PM" contact_name="David XXXX" />' 

이제 이것을 ElementTree와 같은 것으로 처리 할 수 ​​있습니다.

>>> import xml.etree.ElementTree as ET 
>>> element = ET.fromstring(input) 

이제 친숙한 사전으로 태그의 속성에 액세스 할 수 있습니다. 대신 델, 사용`라인을 사용

>>> element.attrib 
{'body': 'Talk to joey?', 'service_center': 'null', 'protocol': '932', 'read': '1', 'sc_toa': 'null', 'readable_date': 'May 17, 2011 2:08:37 PM', 'date': '1305655717379', 'status': '-1', 'address': 'XXXXXXXXXX', 'date_sent': 'null', 'locked': '0', 'contact_name': 'David XXXX', 'toa': 'null', 'type': '1', 'subject': 'null'} 
+0

감사합니다. 파이썬에서 xml 함수가 있는지 확인하지 않았습니다. 그것은 내가 앞으로해야 할 일입니다. 다시 한번 감사드립니다. –

관련 문제