2015-02-11 49 views
-1

我在CSV文件中有一個字符串「111222333」。我想這個轉換成類似「\ 111 \ 222 \ 333」Python:什麼是將9個字符的字符串分成3個字符並使用分隔符將它們加入的最佳方法?

目前我的Python代碼:

refcode = "111222333" 
returnstring = "\\" + refcode[:3] + "\\" + refcode[3:6] + "\\" + refcode[-3:] + "\\" 

我知道必須有一個更好的方式來做到這一點。我可以知道有什麼更好的方法來做同樣的事情嗎?請幫忙。

回答

0

你可以使用re爲:

import re 
refcode = "111222333" 

returnstring = '\\'.join(re.match('()(\S{3})(\S{3})(\S{3})()', refcode).groups()) 

說明: 您有9個字符的字符串(假設他們沒有任何空白chatacters的,所以我們可以用\S代表它)。
我們使用它創建了匹配的正則表達式,因此(\S{3})是一組三個連續的非空格字符(如字母,數字,感嘆號等)。

(\S{3})(\S{3})(\S{3})是三組,每組3個字符。

如果我們在調用它.groups(),我們將有匹配組的元組,就像這樣:

In [1]: re.match('(\S{3})(\S{3})(\S{3})', refcode).groups() 
Out[1]: ('111', '222', '333') 

如果我們使用\字符串時,它的加入,我們會得到一個:

In [29]: print "\\".join(re.match('(\S{3})(\S{3})(\S{3})', refcode).groups()) 
111\222\333 

但是你想在字符串的兩邊添加反斜槓! 所以我們可以在正則表達式的每一邊創建一個空組 - () - 。

相關問題