如何用下划线替换字符串中的字母?

2024-04-25 00:21:42 发布

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

我试着抓取字符串中的字母,并用一个空空格替换它们,在这种情况下,空空格用“u”表示,每个下划线之间有一个空格。

这是我的代码:

word = "my example"
def convert_letter(word):
    for i in range(0, len(word)):
        if ord(word[i]) != 32:
            word.replace(word[i], '_')
    print(word)
convert_letter(word)

当我运行代码时,它只返回单词或字符串,我不知道为什么。

以防您想知道if语句的目的是不将空格转换为“\u”。

所以在这个函数中,我期望如下:

_ _  _ _ _ _ _ _ _

Tags: 字符串代码inconvertforifexamplemy
3条回答

如果你想走regex路线:

import re

word = "my example"
word = re.sub('\w', '_ ', word)

根据具体要替换的内容,可能需要更改regex。\w例如包括数字,因此您可能需要[A-Za-z]

注意,和str.replace()一样,它也不会修改原始文件。

代码中的问题是str.replace没有就地修改字符串,而是返回一个完成替换的副本。如果要替换原始字符串,必须将其重新分配

word = word.replace(word[i], '_')

确保你理解你正在处理的部分,如果你从一个简单的程序开始,你可以看到replace没有像你期望的那样执行

w = 'abc'
w.replace('a', 'x') # should be w = w.replace(...)
print(w) # prints 'abc'

如果我把你问题的标题照字面意思理解,你只想用下划线代替这些字母。这将保留所有特殊字符和数字的完整性。在这种情况下,可以使用string.ascii_lettrsjoin

def convert_letter(word):
    ''.join('_' if c in string.ascii_letters else c for c in word)

如您在其他注释中所述,实际上您希望下划线之间有一个空格,如果是这样,那么请使用' '.join

试试看

new_word = word.replace(word[i], '_ ')

string.replace()的文档中:它返回一个字符串s的副本,其中所有出现的子字符串old替换为new。

word = "my example"

def convert_letter(word):
    new_word = word
    for i in range(0, len(word)):
        if ord(word[i]) != 32:
            new_word = new_word.replace(word[i], '_ ')
    print(new_word)
convert_letter(word)

相关问题 更多 >