什么不在txt文件中表示?

时间:2015-08-24 17:33:33

标签: python text pandas

我正在使用pandas打开一个txt文件,并且文件中应该有一个列中断,而是\t

我正在读这样的文件:

df=pd.read_csv(r'file.txt')

数据框如下所示:

1           Band 1\t 0.428944\t0.843916\t0.689923\t0                    
2           Band 2\t-0.000000\t0.689320\t0.513170\t0                   
3           Band 3\t 0.336438\t0.743478\t0.592622\t0                    
4           Band 4\t 0.313259\t0.678561\t0.525667\t0                     
5           Band 5\t 0.374522\t0.746828\t0.583513\t0

我希望它看起来像这样:

1           Band 1   0.428944  0.843916  0.689923                     
2           Band 2  -0.000000  0.689320  0.513170                  
3           Band 3   0.336438  0.743478  0.592622                    
4           Band 4   0.313259  0.678561  0.525667                    
5           Band 5   0.374522  0.746828  0.583513

我是新手在python中使用txt文件,我是否可能需要设置某种分隔符?

使用print(repr(open(r'D:\Sheyenne\Statistics\NDVI_allotment\Text\A_Annex2.txt').read(42)))返回:

'\n\n     Band 1\t 0.428944\t0.843916\t0.689923\t

编辑:

我发布的原始数据帧已经过简化,实际上有更多的数据列。

`print(repr(open(r'D:\Sheyenne\Statistics\NDVI_allotment\Text\A_Annex2.csv').read(500)))

返回:

'\nBasic Stats\t      Min\t     Max\t    Mean\t   Stdev\t  Num\tEigenvalue\n     Band 1\t 0.428944\t0.843916\t0.689923\t0.052534\t    1\t  0.229509\n     Band 2\t-0.000000\t0.689320\t0.513170\t0.048885\t    2\t  0.119217\n     Band 3\t 0.336438\t0.743478\t0.592622\t0.052544\t    3\t  0.059111\n     Band 4\t 0.313259\t0.678561\t0.525667\t0.048047\t    4\t  0.051338\n     Band 5\t 0.374522\t0.746828\t0.583513\t0.055989\t    5\t  0.027913\n     Band 6\t-0.000000\t0.749325\t0.330068\t0.314351\t    6\t  0.022561\n     Band 7\t-0.000000\t0.819288\t0.6001'

3 个答案:

答案 0 :(得分:8)

这是标签字符。这意味着您的pandas.read_csv()调用无法自动确定文件中的正确分隔符。

您可以尝试使用sep参数明确指定它:

df = pd.read_csv(r'file.txt', sep='\t')

或者您可以将delim_whitespace参数设置为true,以获得一般的空白分隔符支持:

df = pd.read_csv(r'file.txt', delim_whitespace=True)

从您的示例中看起来您有额外的空行以及分隔符后的空格,因此您可能需要让读者跳过这些:

df = pd.read_csv(r'file.txt', sep='\t',
                 skipinitialspace=True, skip_blank_lines=True)

请参阅documentation on handling CSV files

答案 1 :(得分:2)

\是一个转义字符。它改变了下一个字符的表示。在\t的情况下,它变为制表空间。 https://en.wikipedia.org/wiki/Escape_character

答案 2 :(得分:1)

\t<tab>字符的转义序列。