[英]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.