python - 如何将 ljust() 转换应用于字符串列表的每个元素?
问题描述
我正在学习 python,我试图在一些示例文本的每一行前面添加 2 **。但是,当我在每个元素上调用 ljust(2,'*') 时,它不会更改原始字符串。我想用这个旧字符串替换新元素,但是如何?
这是我尝试过的。首先,我使用常规的 for 循环尝试了它,但没有奏效。然后我遇到了一个解释列表推导的问题对 Python 列表中的每个元素执行字符串操作,所以我尝试了。
这就是我现在拥有的
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)
推荐阅读
- angular - 如何删除/更新异步方式以及何时取消订阅?
- git - Monitor Git push in Visual Studio Code
- unit-testing - 开玩笑测试 Vuetify Dropdown
- octobercms - How to create my own module in October CMS?
- sql - django pyodbc Data Source Name not found
- matlab - 如何根据变量标题的正则表达式在Matlab中索引表?
- swiftui - List SwiftUI 中的每行是否可以有多个 NavigationLink?
- c# - 为什么没有触发 CollectionChanged 的订阅事件?
- javascript - window.onload = function() 没有显示完整的味精
- javascript - 案例陈述一次提出多个警报