首页 > 解决方案 > how we can split a data input where some of them are separated by one space and some with 2 space?

问题描述

I have a data input as below:

[-114 -114  228 -114  228  228 -114 -114  228  228 -114  228 -114 -114  914]
[ 228 -114 -114  914  228 -114 -114  228  228 -114 -114  228  228 -114 -114]

as you can see there is 1 space before negative numbers and 2 spaces before positive.

I read file as this :

def switch(letter):
    switcher = {
        "[": "",
        "]": "",
        "\n": "@",
    }
    return switcher.get(letter, letter)


converted_data = ''
with open("/Users/naghmeh/Documents/python/core1", "r") as file:
    data = file.read()

for letter in data:
    letter = switch(letter)
    converted_data = converted_data+letter

converted_data = converted_data.split('@')
split_converted_data = []
for i in converted_data:
    i = i.split(" ")
    split_converted_data.append(i)  

which i = i.split(" ") separate by 1 space. so code can not be run correctly. how I can fix it?

标签: python

解决方案


split文档中,您可以找到:

如果 sep 未指定或为 None,则应用不同的拆分算法:连续空格的运行被视为单个分隔符,如果字符串具有前导或尾随空格,则结果将在开头或结尾不包含空字符串。

所以,使用split()时不要指明分隔符。

"-114 -114  228 -114  228  228 -114 -114  228  228 -114  228 -114 -114  914".split()

推荐阅读