有没有办法在列表中的字符串空格之间插入'-'?



例如,我有这个列表:

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

我想把这个列表做成:

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

你可以这样做:

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 ']

你可以试试下面的列表理解

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]

您可以使用 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']
List = ['test test test ', 'test y jk ']
lenght = len(List)
i = 0
while i < lenght:
List[i] = List[i].replace(' ', '-')
i += 1
print(List)

相关内容

  • 没有找到相关文章

最新更新