Python 如何从ARL NOAA读取txt文件

Python 如何从ARL NOAA读取txt文件,python,pandas,Python,Pandas,晚上好!我想从txt文件创建一个数据帧,它是打开的。文本文件为: HR 0 + 0. 13.0 3.3 51.50 0.0 97.4 0.0 0.0 7.0 1 + 3. 21.7 4.8 33.00 0.0 90.5 0.0 0.0 4.8 2 + 6. 30.6 0.3 14.30 0.0 57.8 0.0 0

晚上好!我想从txt文件创建一个数据帧,它是打开的。文本文件为:

HR             
0     + 0.    13.0   3.3   51.50   0.0   97.4   0.0   0.0   7.0          
1     + 3.    21.7   4.8   33.00   0.0   90.5   0.0   0.0   4.8        
2     + 6.    30.6   0.3   14.30   0.0   57.8   0.0   0.0   3.3 
.      
.      
51   +153.    31.2  -2.3   11.3   0.00   5.1    20.1  -0.9  1.7  
52   +156.    28.5  -0.5   15.2   0.00   12.2   86.0  -4.5  1.4
      0      1      2       3      4       5     6      7      8               
0    +0.0  13.0    3.3    51.50   0.0    97.4   0.0    0.0    7.0          
1    +3.0  21.7    4.8    33.00   0.0    90.5   0.0    0.0    4.8        
2    +6.0  30.6    0.3    14.30   0.0    57.8   0.0    0.0    3.3       
.          
.          
.
51  +153.  31.2    -2.3    11.3   0.00   5.1    20.1  -0.9    1.7 
52  +156.  28.5    -0.5    15.2   0.00   12.2   86.0  -4.5    1.4
53  +159.  17.6     1.9    34.9   0.17   0.5   126.2  -26.3   5.6  
我是这样读数据的:

      0      1      2       3      4       5     6      7      8               
0    +0.0  13.0    3.3    51.50   0.0    97.4   0.0    0.0    7.0          
1    +3.0  21.7    4.8    33.00   0.0    90.5   0.0    0.0    4.8        
2    +6.0  30.6    0.3    14.30   0.0    57.8   0.0    0.0    3.3       
.          
.          
.
51  +153.  31.2    -2.3    11.3   0.00   5.1    20.1  -0.9    1.7 
52  +156.  28.5    -0.5    15.2   0.00   12.2   86.0  -4.5    1.4
53  +159.  17.6     1.9    34.9   0.17   0.5   126.2  -26.3   5.6  
df=pd.read_表('/174479_METGRAM.TXT',skiprows=1,sep='\s+',header=None)

      0      1      2       3      4       5     6      7      8               
0    +0.0  13.0    3.3    51.50   0.0    97.4   0.0    0.0    7.0          
1    +3.0  21.7    4.8    33.00   0.0    90.5   0.0    0.0    4.8        
2    +6.0  30.6    0.3    14.30   0.0    57.8   0.0    0.0    3.3       
.          
.          
.
51  +153.  31.2    -2.3    11.3   0.00   5.1    20.1  -0.9    1.7 
52  +156.  28.5    -0.5    15.2   0.00   12.2   86.0  -4.5    1.4
53  +159.  17.6     1.9    34.9   0.17   0.5   126.2  -26.3   5.6  
我想得到这个:

      0      1      2       3      4       5     6      7      8               
0    +0.0  13.0    3.3    51.50   0.0    97.4   0.0    0.0    7.0          
1    +3.0  21.7    4.8    33.00   0.0    90.5   0.0    0.0    4.8        
2    +6.0  30.6    0.3    14.30   0.0    57.8   0.0    0.0    3.3       
.          
.          
.
51  +153.  31.2    -2.3    11.3   0.00   5.1    20.1  -0.9    1.7 
52  +156.  28.5    -0.5    15.2   0.00   12.2   86.0  -4.5    1.4
53  +159.  17.6     1.9    34.9   0.17   0.5   126.2  -26.3   5.6  

如何获取此信息?

如果每列之间有2个或更多空格,则可以使用
\s{2,}
解析数据。比如说,

      0      1      2       3      4       5     6      7      8               
0    +0.0  13.0    3.3    51.50   0.0    97.4   0.0    0.0    7.0          
1    +3.0  21.7    4.8    33.00   0.0    90.5   0.0    0.0    4.8        
2    +6.0  30.6    0.3    14.30   0.0    57.8   0.0    0.0    3.3       
.          
.          
.
51  +153.  31.2    -2.3    11.3   0.00   5.1    20.1  -0.9    1.7 
52  +156.  28.5    -0.5    15.2   0.00   12.2   86.0  -4.5    1.4
53  +159.  17.6     1.9    34.9   0.17   0.5   126.2  -26.3   5.6  
df = pd.read_table('https://ready.arl.noaa.gov/readyou /174479_METGRAM.TXT',
                   skiprows=1, sep='\s{2,}',header=None)
如果某些列之间只有1个空格,而
+0。
必须被识别为单个值,则可以使用regex模式
(?。此正则表达式匹配1个或多个不以加号或减号开头的空格。因此,数字之间的单个空格可以识别为分隔符,但
+
0之间的空格。
不会被视为分隔符,因为此空格前面有加号

      0      1      2       3      4       5     6      7      8               
0    +0.0  13.0    3.3    51.50   0.0    97.4   0.0    0.0    7.0          
1    +3.0  21.7    4.8    33.00   0.0    90.5   0.0    0.0    4.8        
2    +6.0  30.6    0.3    14.30   0.0    57.8   0.0    0.0    3.3       
.          
.          
.
51  +153.  31.2    -2.3    11.3   0.00   5.1    20.1  -0.9    1.7 
52  +156.  28.5    -0.5    15.2   0.00   12.2   86.0  -4.5    1.4
53  +159.  17.6     1.9    34.9   0.17   0.5   126.2  -26.3   5.6  

如果列由制表符分隔,那么您可以通过正则表达式模式
\t+
指定列分隔符,该模式匹配1个或多个制表符。您发布的代码片段似乎没有使用制表符作为分隔符,但我想我应该提一下这一点,以防在粘贴过程中制表符以某种方式转换为空格。

请发布一篇文章174479_METGRAM.TXT的片段。链接似乎已断开。我已将数据摘录
      0      1      2       3      4       5     6      7      8               
0    +0.0  13.0    3.3    51.50   0.0    97.4   0.0    0.0    7.0          
1    +3.0  21.7    4.8    33.00   0.0    90.5   0.0    0.0    4.8        
2    +6.0  30.6    0.3    14.30   0.0    57.8   0.0    0.0    3.3       
.          
.          
.
51  +153.  31.2    -2.3    11.3   0.00   5.1    20.1  -0.9    1.7 
52  +156.  28.5    -0.5    15.2   0.00   12.2   86.0  -4.5    1.4
53  +159.  17.6     1.9    34.9   0.17   0.5   126.2  -26.3   5.6