2013-08-23 38 views
1

所以基本上我有一個CSV,如:直到第一個逗號正則表達式替換所有出現的空格?

121\sdf\ 34 4333DSssD,23233,TECH,32, ... 

是第一個字符串是ID,但它應該有不+空格。他們得到了修剪,所以現在在每一行,直到我需要用+替換任何空格的第一個逗號。

正在考慮對此和re.sub(使用python進行處理)使用正則表達式,但我只是在獲取空格時遇到問題。

希望StackOverflow上可以幫助:d

+0

如果在CSV串領域有着','作爲其數據的一部分?如果它有'\ n'呢? RegEx可能對此不太好。在混淆內容之前,您必須使用正確的CSV文件解析器。 – Havenard

回答

2

這可以在沒有一個正則表達式來完成;只是分區的逗號和操縱左分區

with open('path/to/input') as infile: 
    for line in infile: 
    left, comma, right = line.partition(',') 
    print "%s%s%s" %(left.replace(' ', "+"), comma, right) 
+0

如果您不想指定您可以避開的分隔符:'left,right = line.partition(',')[:: 2]' –

1

這裏是沒有正則表達式的一個解決方案(假設你有一個行的字符串稱爲line,這可能會是一個for循環是迭代的內文件對象):

pieces = line.split(',', 1) 
pieces[0] = pieces[0].replace(' ', '+') 
line = ','.join(pieces) 

或者使用正則表達式:

import re 
line = re.sub(r'^[^,]*', lambda m: m.group(0).replace(' ', '+'), line) 
+0

假設文本中的每一行都是完整的CSV行,錯了,並且假定文件中的每個'''是分隔的字段也是錯誤的。它可以用於簡單的情況,但這不是應該如何解析CSV文件。 – Havenard

相關問題