簡體   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