我有一个.csv文件,我想保存为.txt以下是我的原始数据:组织数据
我将此文件保存为.txt,并使用以下换行符、注释等规则:
np.savetxt(r'/test/text.txt', df, newline=',n', comments='',fmt='%f', header=''.join(f'{col}t' for col in df.columns)[:-1])
结果文本文件
问题是我需要所有的行都有"以及除第一行外的末尾但在这种情况下,我在上面的代码中指定的换行规则适用于所有行!
知道有什么方法可以防止这种情况发生吗?
或者你知道创建所需文本文件的另一种方法吗?
示例:
将其视为原始数据:
df = pd.DataFrame({'NumberOfPages:float': {0: 96.0, 1: 96.0, 2: 144.0},
'bid:token': {0: 3, 1: 3, 2: 5}})
输出应该是这样的:
bid:token NumberOfPages:float
3.000000 96.000000,
3.000000 96.000000,
5.000000 144.000000,
但我明白了:
bid:token NumberOfPages:float,
3.000000 96.000000,
3.000000 96.000000,
5.000000 144.000000,
*注意"第一行中浮动后的符号
您可以在之后删除该字符
import pandas as pd
import numpy as np
df = pd.DataFrame({'NumberOfPages:float': {0: 96.0, 1: 96.0, 2: 144.0},
'bid:token': {0: 3, 1: 3, 2: 5}})
np.savetxt('test.txt', df, newline=',n', comments='',fmt='%f', header=''.join(f'{col}t' for col in df.columns)[:-1])
with open("test.txt", 'r+') as f:
lines = f.readlines()
lines[0] = lines[0].replace(',', '') # Only modify header
f.seek(0)
f.writelines(lines)
输出:
NumberOfPages:float bid:token
96.000000 3.000000,
96.000000 3.000000,
144.000000 5.000000,
请注意,对于非常大的文件,这可能会很慢,因为f.readlines()
应该读取文件的所有行。如果可以用空格覆盖逗号,你也可以使用这个,它不会将整个文件加载到内存中:
import pandas as pd
import numpy as np
df = pd.DataFrame({'NumberOfPages:float': {0: 96.0, 1: 96.0, 2: 144.0},
'bid:token': {0: 3, 1: 3, 2: 5}})
np.savetxt('test.txt', df, newline=',n', comments='',fmt='%f', header=''.join(f'{col}t' for col in df.columns)[:-1])
with open("test.txt", 'r+') as f:
header = f.readline()
f.seek(0)
f.write(f"{header[:-2]} ")
输出:
NumberOfPages:float bid:token <--- beware this space
96.000000 3.000000,
96.000000 3.000000,
144.000000 5.000000,