Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的原始数字数据管理_Python_Slice_Raw - Fatal编程技术网

python中的原始数字数据管理

python中的原始数字数据管理,python,slice,raw,Python,Slice,Raw,正如我们所知,python有一个语法系统来识别不同类型的数据,特别是对于数字,这是一个整数:87665,这是一个浮点:667.03 我的问题是我有以下格式的设备原始数据(示例): 正如您在python上看到的那样,它们是浮动的,每个“数字”包括点在内都需要8个空格,如下所示:点前3个空格/dot/dot后4个空格,因此,例如,我可以有数字“0.01”,但在原始数据中它将显示为“-0.01-”,或者我可以有“562.4001”,最初这应该用Fortran处理,但我更喜欢python 我试图建立一个

正如我们所知,python有一个语法系统来识别不同类型的数据,特别是对于数字,这是一个整数:87665,这是一个浮点:667.03

我的问题是我有以下格式的设备原始数据(示例):

正如您在python上看到的那样,它们是浮动的,每个“数字”包括点在内都需要8个空格,如下所示:点前3个空格/dot/dot后4个空格,因此,例如,我可以有数字“0.01”,但在原始数据中它将显示为“-0.01-”,或者我可以有“562.4001”,最初这应该用Fortran处理,但我更喜欢python

我试图建立一个处理数据的规则,比如:

in data replace "  " for ", "

“数据”是一个原始数字的字符串(我只是将整个数字块转换成一个字符串,然后像这样处理),但有时两个不同的数字之间只有一个空格,有时根本没有空格。所以基本上我想让python知道,在这个字符串中,每8个空格是一个新的浮点,我认为使用一些slice命令是可能的,但我还没有完全掌握它。。。帮助…

将行拆分为8个字符的块。从每个区块周围去掉空格,然后调用
float()
将其转换为float

def line_to_floats(line, width):
    return list(map(float, [line[i:i+width].strip() for i in range(0, len(line), width)]))

text = ''' 22.5946120.0000  9.2703108.3784 30.2703 35.4054  4.8378 74.3243
 51.8919 96.4865145.6757 63.7838  6.1892 12.4054 58.1081145.4054
 61.3514 52.1622 16.0000 38.6486 38.1081 75.9459 59.1892  9.8649
 45.6757 38.3784 45.9459 47.0270 51.8919 36.4865  4.6757 42.4324
 58.6486 28.1081 32.9730 58.1081  8.7568 45.1351 59.4595 30.5405'''
for line in text.split('\n'):
    print(line_to_floats(line, 8))

将行拆分为8个字符的块。从每个区块周围去掉空格,然后调用
float()
将其转换为float

def line_to_floats(line, width):
    return list(map(float, [line[i:i+width].strip() for i in range(0, len(line), width)]))

text = ''' 22.5946120.0000  9.2703108.3784 30.2703 35.4054  4.8378 74.3243
 51.8919 96.4865145.6757 63.7838  6.1892 12.4054 58.1081145.4054
 61.3514 52.1622 16.0000 38.6486 38.1081 75.9459 59.1892  9.8649
 45.6757 38.3784 45.9459 47.0270 51.8919 36.4865  4.6757 42.4324
 58.6486 28.1081 32.9730 58.1081  8.7568 45.1351 59.4595 30.5405'''
for line in text.split('\n'):
    print(line_to_floats(line, 8))

将行拆分为8个字符的块。从结尾去掉所有空格,然后将它们解析为浮点数。将行拆分为8个字符的块。从两端去掉所有空格,然后将它们解析为浮点数。这对于一行数字很好,但对于几行数字,它会变得混乱,并告诉您他无法将“(任何包含空格的片段)”转换为浮点数。你有什么建议吗?你应该在各行上循环,并为每行调用此函数。我已经更新了答案,以说明如何处理多行。是的,它可以工作,但你需要注意每行的开头,例如,如果一行以111.0254开头,则不要在以11.0001开头的行所在的列中添加空格。当然谢谢。这仅适用于固定格式的输入。这适用于一行数字,但如果有几行,它会变得混乱,并告诉您他无法将“(任何包含空格的切片)”转换为浮点。你有什么建议吗?你应该在各行上循环,并为每行调用此函数。我已经更新了答案,以说明如何处理多行。是的,它可以工作,但你需要注意每行的开头,例如,如果一行以111.0254开头,则不要在以11.0001开头的行所在的列中添加空格。当然谢谢。这仅适用于固定格式输入。