2013-02-19 48 views
1

我對Python比較陌生(使用v2.7.3),並決定測試我的技能,編輯包含我在手機上收到的所有文本的文本文檔。我想編輯出無用的信息,所以我寫了一個腳本來做到這一點,但是單詞之間的所有空格都被刪除了。在Python中的字符串中添加空格?

下面是輸入數據的一個示例:

SMS協議= 「932」 地址= 「XXXXXXXXXX」 日期= 「1305655717379」 類型= 「1」 受試者= 「空」 的身體=「交談喬伊?」 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 = 「大衛XXXX」/>

這裏的輸出數據的樣本:

體= 「?Talktojoey」 TOA = 「空」 sc_toa = 「空」 service_center = 「空」 讀= 「1」 狀態= 「 - 1」 鎖定= 「0」 DATE_SENT = 「空」 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 2013-02-19 19:34:51

+0

@Hiroto:還不錯的建議,但它是如何有關他的問題? – abarnert 2013-02-19 19:37:24

+0

@abarnet它不是,但我只是挑剔,他說他是python的新手,這就是爲什麼它是一個評論。 – Amelia 2013-02-19 19:42:37

回答

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 2013-02-19 19:39:55

+0

感謝琥珀,像魅力一樣工作! – 2013-02-19 20:22:26

0

這裏的問題是您要求output.writelines(line)

我不確定當給出一個字符串列表時,您希望做什麼,但是您不能期望將它們打印爲包含空格的單詞。這些話不是分開的,你不希望他們那樣。

那麼,如何將單詞列表連接到單個字符串中,並用空格分隔單詞?使用join方法:

' '.join(line) 

然後,代替使用writelines(其希望多線),只需使用write

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

writewritelines之間的差異參見Input and Output教程(和其他東西)。

+0

感謝您的幫助。我嘗試使用output.write,但它導致了一個緩衝區錯誤。無論出於什麼原因output.writelines沒有導致錯誤,所以我跑它。你的建議像一種魅力,我很感激它。 – 2013-02-19 20:25:35

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

謝謝,我沒想過檢查Python中是否有xml函數。這是我將來肯定會做的事情。再次感謝。 – 2013-02-19 20:21:54