2015-10-26 73 views
0

尝试了不同数量的组合,无效。Python:从一串数字中删除随机空格

基本上,这是我这串数字:

20101002 100224 1 1044  45508 1001 1002 1003 1004 1005 1006 

输出后我:

20101002 100224 1 1044 45508 1001 1002 1003 1004 1005 1006 

基本上所有的空格前的最后一个号码后要被修剪。最重要的是,数字之间只应该有一个空格。

我要补充一点,我目前拥有的代码如下,并在字符串的开始和结束只用空格涉及:

row = line.strip().split(' ') 

任何帮助非常感谢,谢谢!

+0

你尝试过什么吗? –

+0

使用_regex_和're.sub()'方法 – CrakC

回答

5

s = '20101002 100224 1 1044  45508 1001 1002 1003 1004 1005 1006' 
new_s = ' '.join(s.split()) 
print(new_s) 

产生

20101002 100224 1 1044 45508 1001 1002 1003 1004 1005 1006 

基本上,存在涉及两个步骤:

第一我们分割字符串成单词与s.split(),它返回这个列表

['20101002', '100224', '1', '1044', '45508', '1001', '1002', '1003', '1004', '1005', '1006'] 

然后我们通过列表来' '.join,利用它们之间的空格字符

+0

我得到',,,,2,0,1,0,1,0,0,2,,,1,0,0,2,2,4 1,...,1,0,4,4,...,4,5,5,0,8,...,1,0,0,1,...,1,0,..., 0,2,,1,0,0,3,,,1,0,0,4,,,1,0,0,5,,,1,0,0,6,“ ”'回来。难道是因为我在使用Python 3吗? – user4659009

+0

我已经尝试了python 3.4.3上的代码,它工作正常。复制和粘贴 – Pynchia

+0

它看起来很好,当我将它打印在终端,但是当我将它导出到一个CSV它改变格式:/'开放(bad_csv_file,“W”)为MYFILE: WR = csv.writer(MYFILE) 在bad_csv行: 行= ''。加入(line.split()) 打印(行) wr.writerow(行)'任何想法,为什么? – user4659009

0

默认情况下Python的str.split方法按空白进行分割其加入列表中的所有元素。

a = "20101002 100224 1 1044  45508 1001 1002 1003 1004 1005 1006" 

" ".join(a.split()) 
3
import re 
text = "20101002 100224 1 1044  45508 1001 1002 1003 1004 1005 1006" 
re.sub(r"\s+", " ", text) 
#=> 20101002 100224 1 1044 45508 1001 1002 1003 1004 1005 1006