我有一个读取文件并处理数据的函数,我需要将其写入新文件。但是,我不能将数据放入文件,因为它不是字符串格式,即使我认为我已将其转换为函数中的字符串?我是否忽略了某些内容或者是否需要添加更多代码?
def process_data(data_file):
data = open(data_file, "r")
next (data)
for line in data:
line = line.rstrip()
m = line.split("\t")
x = m[2:]
numbers = [float(i) for i in x]
avg = [float(sum(numbers))/len(numbers)]
max_num = [max(numbers)]
min_num = [min(numbers)]
main_list = avg + max_num + min_num
values = [str(i) for i in main_list]
print('\t'.join(map(str,values)))
我尝试编写错误时得到的错误是"参数必须是str not not None"
write(process_data(data_file))
答案 0 :(得分:1)
你的函数返回None
。不要print
你的返回值,只是累积到一个字符串列表然后返回它最后由换行连接(避免字符串连接效率低下)
我还修复了一些笨拙的列表创建并删除了一个不必要的强制转换为str
(两次完成)。
def process_data(data_file):
retval = []
data = open(data_file, "r")
next (data)
for line in data:
line = line.rstrip()
m = line.split("\t")
x = m[2:]
numbers = [float(i) for i in x]
values = [float(sum(numbers))/len(numbers),max(numbers),min(numbers)]
retval.append('\t'.join(map(str,values)))
return "\n".join(retval)
请注意,使用csv
模块作为读者和编写器会更好,可以为您节省大量的拆分,加入和转换......但这对CodeReview来说更像是一份工作。