我正在尝试删除数据文件中的所有空格并将其替换为逗号,
我目前正在使用正则表达式执行此操作。
我收到错误:
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
答案 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
值。