在python中删除CSV中的字符串空格

时间:2015-02-13 20:30:04

标签: python csv space reader

我有一个由程序输出的CSV。分隔符是一个空格。一个"细胞" CSV由用户手动输入,其余部分自动生成。问题是用户可能在他们手动输入的字符串中有一个空格。如果我将此输入到excel中,则会导致列关闭。我试图用Python编写一个程序来消除用户输入中的这些空格,并用下划线替换它们。

所以我想从这个

开始
 600 2 light rain event 2015-01-12 17:48:07

到这个

 600 2 gmk_light_rain_event 2015-01-12 17:48:07

有没有办法在python中编写代码?

4 个答案:

答案 0 :(得分:3)

使用str类的替换方法

"light rain event".replace(' ', '_')

答案 1 :(得分:2)

如果您可以在输入数据时更接近更换空格,那会更好。但是,如果您已经收集了数据,则需要一条规则来识别其他字段

>>> s = "600 2 light rain event 2015-01-12 17:48:07"
>>> parts = s.split(" ")

规则:单独留下第一个和最后两个字段。在余数

中将“”替换为“_”
>>> parts[:2] + ["_".join(parts[2:-2])] + parts[-2:]
['600', '2', 'light_rain_event', '2015-01-12', '17:48:07']

加入结果列表的部分

>>> " ".join(parts[:2] + ["_".join(parts[2:-2])] + parts[-2:])
'600 2 light_rain_event 2015-01-12 17:48:07'

你可以像这样添加“gmk”标签

>>> " ".join(parts[:2] + ["gmk_"+"_".join(parts[2:-2])] + parts[-2:])
'600 2 gmk_light_rain_event 2015-01-12 17:48:07'

答案 2 :(得分:0)

您可以使用正则表达式:

>>> import re
>>> s="light rain event"
>>> re.sub(r'\s+', '_', s)
'light_rain_event'
>>> 'gmk_'+re.sub(r'\s+', '_', s)
'gmk_light_rain_event'

答案 3 :(得分:0)

你需要根据之前和之后的空格数来拆分它,因为我猜它中间可以有任意数量的空格。

#Line read from CSV
line = "600 2 light rain event 2015-01-12 17:48:07"

#Just incase any parts need changing
spaceBetweenWords = "_"
prefix = "gmk"

#Split by spaces
separatedLine = line.split( " " )

#Get the middle part that needs underscores
startBit = " ".join( separatedLine[:2] )
middleBit = spaceBetweenWords.join( [prefix] + separatedLine[2:-2] )
endBit = " ".join( separatedLine[-2:] )


print "{0} {1} {2}".format( startBit, middleBit, endBit )
# Result: 600 2 gmk_light_rain_event 2015-01-12 17:48:07

我添加了一些你可以轻松更改下划线和'gmk'的地方,如果需要,虽然抬头我可以看到John几乎以同样的方式做到了:)