有没有一种方法可以在列表中字符串的空格之间插入“-”?

时间:2020-06-06 17:58:24

标签: python python-3.x

例如,我有以下列表:

['I am the ', 'ugliest person']

我想将此列表设为:

['I-am-the ', 'ugliest-person']

4 个答案:

答案 0 :(得分:3)

您可以这样做:

lst = ['I am the ', 'ugliest person']
lst = ['-'.join(val.split()) for val in lst]

val.split()将在任何空白处分割val,然后将所有分割后的元素与-重新加入。

要保留lst每个元素边缘的空白,可以添加以下功能:

def get_ending_spaces(val):
    return ' ' * (len(val) - len(val.rstrip()))

def get_beginning_spaces(val):
    return ' ' * (len(val) - len(val.lstrip()))

并将列表理解更改为

lst = [get_beginning_spaces(val) + '-'.join(val.split()) + get_ending_spaces(val) for val in lst]

如果您的所有用例都与您的示例类似(其中没有空白),请随时删除get_beginning_spaces调用。

的输出
[' I am the ', ' ugliest person ']

最终成为

[' I-am-the ', ' ugliest-person ']

答案 1 :(得分:2)

您可以尝试下面的列表理解

new_list = [x.replace(' ','-') for x in list]

这将创建一个名为“ new_list”的新列表,并用短划线(-)替换空格 希望对您有帮助

编辑:上面的代码未保留OP注释的尾随空格。以下更改可能会解决此问题(仅在涉及单个尾随空格的情况下:/)

new_list = [x[:-1].replace(' ','-') if x[-1]==' ' else x.replace(' ','-') for x in list]

因此,适当的解决方案将更像这样:

def replace_spaces(sentence):
    l = sentence.split(' ')
    l = [x if x for x in l]
    return '-'.join(l)
new_list = [ replace_spaces(x) for x in list]

答案 2 :(得分:0)

您可以使用re来做到这一点:

import re

l = ['I am the ', 'ugliest person']
for i,s in enumerate(l):
    for n in re.findall('\w *?\w',s): # Finds all spaces that are between 2 letters
        s = s.replace(n,n.replace(' ','-')) # Only replace the spaces that are between 2 letters
    l[i] = s

print(l)

输出:

['I-am-the ', 'ugliest-person']

答案 3 :(得分:-1)

List = ['test test test ', 'test y jk ']
lenght = len(List)
i = 0
while i < lenght:
   List[i] = List[i].replace(' ', '-')
   i += 1
print(List)