python strip()似乎没有按预期工作

时间:2013-12-03 18:25:19

标签: python string removing-whitespace

我为虚拟问题道歉,但我遇到了一个奇怪的问题,一个简单的脚本似乎是正确的,但没有按预期工作

#!/usr/bin/python
import json,sys
obj=json.load(sys.stdin)
oem=obj["_id"]
models = obj.get("modelli", 0)

if models != 0:
        for marca in obj["modelli"]:
                brand=obj["modelli"][marca]
                for serie in brand:
                        ser=brand[serie]
                        for modello in ser:
                                model=modello
                                marca = marca.strip()
                                modello = modello.strip()
                                serie = serie.strip()
                                print oem,";",marca,";",serie,";",modello

它应该只是从一个json var循环一个数组并以csv格式打印输出,但是我仍然得到在每个变量(oem,marca,serie,modello)的开头和结尾处包含一个withespace的字符串此

KD-CH884 ; Dell ;  ; 966

这是我在python中的第一个脚本,我只是遵循一些简单的指令,所以我错过了什么或什么? 有什么猜测吗?

4 个答案:

答案 0 :(得分:3)

print语句正在放入那个空格。

来自docs此处:

  

在每个对象(转换和)写入之前写入空格,   除非输出系统认为它位于开头   一条线。

请改用';'.join(...)

答案 1 :(得分:1)

Python实际上剥离了空白。它只是印刷声明:

print oem,";",marca,";",serie,";",modello

..即重新引入空间。尝试连接变量并显示它们。

答案 2 :(得分:0)

试试这个:

print "%s;%s;%s;%s" % (oem,marca,serie,modello)

print ";".join([oem,marca,serie,modello])

答案 3 :(得分:0)

';'.join(filter(None, [oem, marca, serie, modello]))

它只会在两个现有字符串之间放置分号。如果变量在被剥离后保留空字符串,则过滤None将使其脱离列表。