2017-09-25 60 views
0

中的空格。但是如何仅在第一列中更改空格?我想打破由逗号使用`fileout.write(x).replace(''。',')替换一行中用逗号替换所有空格的python

2017/06/07 10:40:02,Rule VWIRE 02,web browsing 
2017/06/07 10:40:02,Rule VWIRE 02,web browsing 
2017/06/07 10:40:02,Rule VWIRE 02,web browsing 
+0

'replace('',',',max = 1)'? –

+0

@WoodyPride:第三个参数在文档中被命名为'count',但它只是位置的,所以它几乎不重要;不能通过一个有意义的名字来传递它。 – ShadowRanger

回答

1
  1. 鉴于这很可能是CSV,你可以只使用the csv module拿到列作为一个元素list(代表给定行),那么只有第一列工作
  2. 如果你知道一个事实,即每列需要这种替换恰好一次,你可以使用str.replace's optional third parameter限制更换

通过#2解决很简单:

with open(infilename) as inf, open(outfilename, 'w') as outf: 
    for line in inf: 
     outf.write(line.replace(' ', ',', 1) 

方法#1只是稍微有点复杂(可能更正确):

import csv 
with open(infilename, newline='') as inf, open(outfilename, 'w', newline='') as outf: 
    csvout = csv.writer(outf) 
    for row in csv.reader(inf): 
     # Only splits first whitespace in first column 
     csvout.writerow(row[0].split(None, 1) + row[1:]) 

在后一种情况下,你可能要执行检查要确认row[0].split(None, 1)实际上产生了两个结果,所以你不要默默地将一些行而不是其他的。

+0

小心创建'csv':'open(outfilename,'w',newline =“”)as outf' as doc states。某些版本的python(windows)往往会在每行之后留下额外的空白行。 –

+0

@ Jean-FrançoisFabre:谢谢你的提醒。我责怪当地的大脑故障热浪。 :-) – ShadowRanger

+0

不客气:)注意,我从来没有遇到问题,没有''换行' –

0

分离的日期和时间如下分为2列这是你需要什么?

s = '2017/06/07 10:40:02,Rule VWIRE 02,web browsing' 
s = s.split(' ') 
s[0] += ',' 
s = ''.join(s) 

输出: 2017年/ 06/07,10:40:02,RuleVWIRE02,网页浏览