我正在学习 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)
