Python:从一串数字中删除随机空格[重复]
Posted
技术标签:
【中文标题】Python:从一串数字中删除随机空格[重复]【英文标题】:Python: Removing random whitespace from a string of numbers [duplicate] 【发布时间】:2016-01-26 02:17:33 【问题描述】:尝试了不同数量的组合,无济于事。
基本上这是我拥有的一串数字:
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(' ')
非常感谢任何帮助,谢谢!
【问题讨论】:
你有什么尝试吗? 使用 regex 和re.sub()
方法
【参考方案1】:
这个
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
,它使用它们之间的空格字符连接列表的所有元素
【讨论】:
我得到 ` , , , ,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? 我已经在 python 3.4.3 上尝试过代码,它工作正常。复制粘贴 当我在终端上打印时它看起来不错,但是当我将它导出到 csv 时它会改变格式:/with open(bad_csv_file, 'w') as myfile: wr = csv.writer(myfile) for line in bad_csv: row = ' '.join(line.split()) print(row) wr.writerow(row)
任何想法为什么?
可能是因为 for
循环正在迭代 bad_csv
而不是 myfile
?
fname = "track_param_stoch.txt" bad_csv_file = 'bad_hist_csv.csv' bad_csv = [] with open(fname) as f: lines = f.readlines() for line in lines: good_csv.append(line) if pattern.match(line) else bad_csv.append(line)
它正在正确迭代,猜测这是 csv 问题的输出,而不是带空格的问题:/【参考方案2】:
默认情况下,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
【讨论】:
以上是关于Python:从一串数字中删除随机空格[重复]的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 从一串单词中删除所有重复的单词。不只是重复,而是需要删除重复项的所有实例。