如何在Python字符串中添加空格?

1 投票
3 回答
4744 浏览
提问于 2025-04-17 16:24

我刚开始学习Python(用的是v2.7.3),想测试一下自己的技能,于是决定编辑一个文本文件,这个文件里记录了我手机收到的所有短信。我想把一些没用的信息删掉,所以写了一个脚本来处理,但发现所有单词之间的空格都被删掉了。

这是我输入的数据示例:

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" />

这是我输出的数据示例:

body="Talktojoey?"toa="null"sc_toa="null"service_center="null"read="1"status="-1"locked="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()

如果有人能帮我加上空格,我会非常感激。谢谢!

3 个回答

0

这里的问题是你在调用 output.writelines(line)

我不太确定你希望这段代码在接收到一个字符串列表时做什么,但你肯定不想把它们打印成单词,中间有空格。那些单词并不是单独的行,你也不想要那样的效果。

那么,怎么把一个单词列表合并成一个字符串,并用空格把单词分开呢?可以使用 join 方法:

' '.join(line)

然后,不要再用 writelines(它是用来处理多行的),直接用 write 就可以了:

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

想了解 writewritelines 之间的区别,可以查看 输入和输出 的教程(还有其他内容)。

1

这段代码...

line = line.split(' ')     

在把内容分成小块的时候,会把空格去掉。你需要把空格再加回去:

line = line.split(' ')     
del line[0:6]
line = ' '.join(line)
line += "\n"
print line,
output.write(line)
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'}

撰写回答