Skip to main content
 首页 » 编程设计

python之我如何将 ljust() 转换应用于字符串列表的每个元素

2025年05月04日40freeliver54

我正在学习 python,我正在尝试在一些示例文本的每一行前面添加 2 **。但是,当我在每个元素上调用 ljust(2,'*') 时,它不会更改原始字符串。我想用这个旧字符串替换新元素,但是如何呢?

这是我试过的。首先,我用常规的 for 循环尝试了它,但是没有用。然后我遇到了一个解释列表推导的问题 Perform a string operation for every element in a Python list所以我试过了。

这是我现在拥有的

example_string = '''hello there how are you doing! 
i am doig well thank you 
lets get to work!!! ''' 
 
 
def modify_example_string(): 
    global example_string 
    new_string_list = [element.ljust(2,'*') for element in example_string.split('\n')] 
    example_string = '\n'.join(new_string_list) 
    print(new_string_list) 
 
modify_example_string() 

这应该会返回一个包含所有 ljust 转换的新列表,但事实并非如此,所以我想知道解决这个问题的正确方法。

请您参考如下方法:

看来你误解了什么ljust(2, '*')是在做。它不会在字符串的开头添加两个 * 但会用 * 填充字符串,总长度为 2。你所有的行都更长,所以它什么都不做.

相反,只需使用 "**"+ line 将星号添加到行中即可。

def modify_example_string(): 
    global example_string 
    example_string = "\n".join("**" + line for line in example_string.splitlines()) 

此外,我建议不要使用 global,而是使用参数和返回值:

def prepend_stars(s): 
    return "\n".join("**" + line for line in s.splitlines()) 
 
example_string = prepend_stars(example_string)