在python中读取单行文件时不跳过某些空格

在python中读取单行文件时不跳过某些空格,python,file,Python,File,我正在尝试用Python读取结构完全相同但非常原始的文件:使用默认列表和解析工具来读取它似乎并不简单,尽管我确信这是可能的。 结构是:int-space int-space-double-space一个包含空格的长字符串 我需要分开存储两个int和float文件头,然后我想将整个字符串作为一个整体,因为我的数据在每个字符的位级别进行编码,我希望我能清楚地解释它 天真地使用.split方法对我没有帮助,因为字符串中有空格,我一直在考虑在前三个空格之后对split中的所有元素进行网格划分,但是如果字

我正在尝试用Python读取结构完全相同但非常原始的文件:使用默认列表和解析工具来读取它似乎并不简单,尽管我确信这是可能的。 结构是:int-space int-space-double-space一个包含空格的长字符串

我需要分开存储两个int和float文件头,然后我想将整个字符串作为一个整体,因为我的数据在每个字符的位级别进行编码,我希望我能清楚地解释它

天真地使用.split方法对我没有帮助,因为字符串中有空格,我一直在考虑在前三个空格之后对split中的所有元素进行网格划分,但是如果字符串中有两个空格,我就会丢失信息


C++中,我将使用,仍然可以使用.S拆除函数。因为您知道行的格式,所以可以传入要生成的行数

str.split(str="", num)
参数 str-这是任何delimeter,默认情况下是空格。 num-这是要进行的拆分数。 所以在你的情况下,你应该能够做到

str.split(str='', 3)
其中应分为:

int int 双重的 一串
您仍然可以使用.split函数。因为您知道行的格式,所以可以传入要生成的行数

str.split(str="", num)
参数 str-这是任何delimeter,默认情况下是空格。 num-这是要进行的拆分数。 所以在你的情况下,你应该能够做到

str.split(str='', 3)
其中应分为:

int int 双重的 一串
因此,每行的格式如下所示,我假设字符串不是通过引号单独转义的:

"4 5 8.7 here is a really long string"
通常,对于更复杂的解析,建议使用正则表达式

import re
[...]

for line in file:
    #let's say line is "4 5 8.7 here is a really long string"
    pat = r'([0-9]+)\s([0-9]+)\s([0-9\.]+)\s([\w\s\_\-]+)'
    match = re.search(pat, line)
    matches_by_group = match.groups() #Do something with this

这样,每一行的每一个单独的片段都将包含在一个元组中。然后,您可以根据需要对double、int等进行强制转换。

因此,每行的格式如下所示。我假设字符串不是通过引号单独转义的:

"4 5 8.7 here is a really long string"
通常,对于更复杂的解析,建议使用正则表达式

import re
[...]

for line in file:
    #let's say line is "4 5 8.7 here is a really long string"
    pat = r'([0-9]+)\s([0-9]+)\s([0-9\.]+)\s([\w\s\_\-]+)'
    match = re.search(pat, line)
    matches_by_group = match.groups() #Do something with this

这样,每一行的每一个单独的片段都将包含在一个元组中。然后,您可以根据需要对double、int等进行强制转换。

步骤1:读取整行。步骤2:要解析的用户正则表达式。在这里查看实现正则表达式的示例。使用maxsplit参数如何?步骤1:阅读整行。步骤2:要解析的用户正则表达式。在这里查看实现正则表达式的示例,使用maxspilt参数如何?非常感谢,它确实是正确的选择;数字不应与行数相对应。它应该对应于拆分的数量,即3。假设:如果给定maxsplit,则最多执行maxsplit拆分,列表最多包含maxsplit+1个元素。很高兴能够提供帮助非常感谢,确实是正确的选项;数字不应与行数相对应。它应该对应于拆分的数量,即3。假设:如果给定了maxsplit,那么最多只能进行maxsplit拆分,列表最多只能有maxsplit+1个元素。很高兴能够提供帮助