在python字符串中插入连字符

在python字符串中插入连字符,python,string,hyperlink,hyphen,Python,String,Hyperlink,Hyphen,我正在抓取一个列表,但希望将字符串转换为永久链接,每个单词之间都有连字符 例如,我有一个列表: ['hi there', 'help please','with my problem'] 我希望它的结局是: ['hi-there','help-please', 'with-my-problem'] 最好的方法是什么?如果您只关心用一个连字符替换一个空格,那么其他答案效果很好(尤其是@kindall's,它还确保您不会以前导或尾随连字符结尾)。但是,如果您想将“foo-bar”转换为“foo-

我正在抓取一个列表,但希望将字符串转换为永久链接,每个单词之间都有连字符

例如,我有一个列表:

['hi there', 'help please','with my problem']
我希望它的结局是:

['hi-there','help-please', 'with-my-problem']

最好的方法是什么?

如果您只关心用一个连字符替换一个空格,那么其他答案效果很好(尤其是@kindall's,它还确保您不会以前导或尾随连字符结尾)。但是,如果您想将
“foo-bar”
转换为
“foo-bar”
,它们将失败

phrases   = ['hi there', 'help please','with my problem']
hyphrases = [p.strip().replace(" ", "-") for p in phrases]
那么:

def replace_runs_of_whitespace_with_hyphen(word):
    return '-'.join(word.split())

hyphrases = [replace_runs_of_whitespace_with_hyphen(w) for w in phrases]
或者使用正则表达式(但这可能会导致前导/尾随连字符):


如果您只关心用一个连字符替换一个空格,那么其他答案也很有用(特别是@kindall's,它还确保您不会以前导或尾随连字符结尾)。但是,如果您想将
“foo-bar”
转换为
“foo-bar”
,它们将失败

那么:

def replace_runs_of_whitespace_with_hyphen(word):
    return '-'.join(word.split())

hyphrases = [replace_runs_of_whitespace_with_hyphen(w) for w in phrases]
或者使用正则表达式(但这可能会导致前导/尾随连字符):

您可以使用:

wordlist = ['hi there', 'help please', 'with my problem']
hyphenated_wordlist = map(lambda s: s.replace(' ', '-'), wordlist)
您可以使用:

wordlist = ['hi there', 'help please', 'with my problem']
hyphenated_wordlist = map(lambda s: s.replace(' ', '-'), wordlist)

当两个答案除了变量名外都是相同的时候总是很有趣的,但当变量名押韵时,比如“短语”和“空格”,情况就更糟了。你和布莱恩需要进行一场说唱比赛,看看谁能得到代表:当两个答案除了变量名外都是相同的时候,这总是很有趣的,但当变量名押韵时,更是如此,比如“短语”和“空格”。你和布莱恩需要进行一场说唱比赛,看看谁能得到这个代表:)在这种情况下,我可能只使用正则表达式。事实上,我有点惊讶没有看到一个基于正则表达式的解决方案在这里已经!因为您使用的是python,所以将解决方案保持为“pythonic”似乎比加载正则表达式引擎来替换破折号的简单空格更好。split+join解决方案似乎更适合于不离开python领域。事实上,我有点惊讶没有看到一个基于正则表达式的解决方案在这里已经!因为您使用的是python,所以将解决方案保持为“pythonic”似乎比加载正则表达式引擎来替换破折号的简单空格更好。split+join解决方案似乎更适合于不离开python领域。