使用python split会留下空字符串

2024-09-30 14:25:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用PythonSplit方法处理一些文件路径。 看起来是这样的,我将文件路径分割成一个列表,然后对其进行切片:

array = "/home/ask/Git/Zeeguu-API/zeeguu_core/user_statistics/main.py"
split = array.split("/")

哪些产出:

['', 'home', 'ask', 'Git', 'Zeeguu-API', 'zeeguu_core', 'user_statistics', 'main.py']

这里的问题是列表开头的小空字符串,它在那里是有意义的,但是很烦人,并且会弄乱我想要做的切片

如何拆分,但忽略空字符串?我宁愿不必做O(n)操作,只是为了过滤掉空字符串,我真的希望在调用split()时能够以某种方式避免它


Tags: 文件字符串coregit路径apihome列表
3条回答

I would rather like to avoid having to do a O(n)

如果这是一个算法作业,我建议你不要读这个解决方案,除非你自己弄明白。。。但是如果不是,那么我建议不要使用split()函数来执行您自己的分割。。。这样做的方式就是在字符串中逐字符迭代,然后手动创建输出列表

index = 0
output_array = ['']

for character in string:
    if character != '/':
        if output_array[index] == None:
            output_array[index] = ''
        output_array[index] += character
    else if output_array[index] != '':   # character == '/'
        index++

上面的代码只是一个伪代码,所以你必须自己重写它。。。此外,此解决方案的问题是,如果path变量中没有任何内容,它将输出[''],但这是一个很容易解决的问题:)

您可以执行以下操作来解决此问题:

array.strip("/").split("/")

当您想要使用"/".join()反转操作并获取原始字符串时,空字符串存在的事实非常有用

array = "/home/ask/Git/Zeeguu-API/zeeguu_core/user_statistics/main.py"
list1= array.split("/")
list_without_space = []
for element in list1:
    if element.strip():
        list_without_space.append(element)

print(list_without_space)

相关问题 更多 >