繁体   English   中英

在Python中从CSV中的字符串中删除空格

[英]Removing spaces from astring within a CSV in python

我有一个程序输出的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中编写代码吗?

使用str类的replace方法

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

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

>>> 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'

您可以使用正则表达式:

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

您需要根据前后的空格数进行拆分,因为我猜它的中间可以有任意数量的空格。

#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”,尽管在查找时我可以看到约翰几乎以相同的方式进行了:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM