找到一行中的所有空格

时间:2014-02-18 18:25:07

标签: python regex

我正在尝试删除数据文件中的所有空格并将其替换为逗号,我目前正在使用正则表达式执行此操作。

我收到错误:

Traceback (most recent call last):
  File "parse_prime.py", line 12, in <module>
    newline = line.replace(whitespace,",")
TypeError: expected a character buffer object

这是我的代码

import re

token = re.compile(r'\s*')
f = open("prime_data.txt","r")
fw = open("prime_out.txt", "w+")

primelist = []

for line in f.readlines():
    findtoken = re.search(token, line)
    replacetoken = line.replace(findtoken,",")

    fw.write(newline)

我不认为我正在寻找正则表达式。我想我会在找到第一组空格后停止。我如何看待整条线?

数据文件采用这种格式

43    3    2    2    123    3

1 个答案:

答案 0 :(得分:4)

您需要在此使用token.sub(),并使用正确的模式(至少匹配一个空白字符或更多):

token = re.compile(r'\s+')

for line in f:
    newline = token.sub(line, ',')
    fw.write(newline)

我放弃了.readlines()电话;文件对象可以通过直接循环,无需将它们读入内存批发。

你也可以在这里使用str.split(),不需要正则表达式:

for line in f:
    newline = ','.join(line.split())
    fw.write(newline + '\n')

您试图调用只接受字符串的str.replace(),但您传递的是re.MatchObject值。