我正在尝试编写一个Python脚本,该脚本基本上使用Pandas readCSV读取CSV / TSV文件(来自CSV的输入示例,如下所示)
0,18778586,Toys,5,0,0,N,Y,Great Quality!!!,2015-08-31,excellent!!!,35.6,0.0,0.0,1.0,0.6784
然后,我仅通过分别保留column [1],column [8]来删除数据帧中不需要的列,并执行apply函数从column [8]中剥离特殊字符并将其转换为小写 然后,我尝试使用大熊猫将数据框中的CSV格式写为txt,以使其看起来像这样
18778586 great quality
格式是文档ID(数字),中间用空格(字符串)分隔。该字符串可以包含空格。
基本上我已经尝试了以下各种组合:-
很明显,我可以编写另一个程序,该程序读取输出文件并删除双精度空格,或者将其看到的第一个选项卡替换为空格。如果没有解决办法,那应该是最后的选择
df.to_csv(filename,header=False,sep=' ',index=False,doublequote=False,quoting=csv.QUOTE_NONE,escapechar=' ')
该代码目前为我提供以下输出。注意双倍间距
18778586 great quality
答案 0 :(得分:0)
使用tab
作为输出分隔符,或用NON-BREAKING spaces
替换现场空格!
假设您有一个名为test.csv
的文件,其中包含以下内容:
0,18778586, Toys,5,0,0,N,Y,This is fantastic,2015-08-31
0,18778586, Toys,5,0,0,N,Y,Excellent!!!,2015-08-31
0,18778586,Toys,5,0,0,N,Y ,Excellent!!!,2015-08-31
U可以应用applymap
来应用strip
方法或您可能要对每个单元格进行的任何处理。
将space
用作output separator
时,熊猫会包装包含诸如"This is fantastic"
这样的空格的输出字段。
tabs \t
作为输出分隔符可解决此问题。df = pandas.read_csv('test.csv', header=None)
df = df.applymap(lambda x: str(x).strip())
df.to_csv(path_or_buf='out.txt', sep='\t', header=False, index=None, columns=[1,8])
# out.txt
# 18778586 This is fantastic
# 18778586 Excellent!!!
# 18778586 Excellent!!!
non-breaking spaces
替换字符串中的空格。...
df = df.applymap(lambda x: str(x).strip().replace(' ', u"\u00A0"))
...
# out.txt
# 18778586 This is fantastic
# 18778586 Excellent!!!
# 18778586 Excellent!!!