我有一个很长的字符串:
S='Hello\n i have a very very very very..... very very very very.... long Text!'
Run Code Online (Sandbox Code Playgroud)
打印此文本会创建一长行,我想将该行分成最大长度为 10 或 20 个字符的片段。我想打破界限并\n拥有\n包含在新字符串中。
我所希望的是:
Hello
i have a very
very very very
..... very very
very very....
long Text!
Run Code Online (Sandbox Code Playgroud) 这听起来像是一个初学者的问题,但我从来没有成功地在Python中以干净的方式编写长字符串.
以下是我列出的4种方法.他们似乎都不对我好.
def useless_func():
# WRONG WAY A : string_A displays well but breaks the 80 char max PEP 8 recommandation
string_A = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
# WRONG WAY B : string_B will create unwanted spaces between word 'sed' and 'do' when printed
string_B = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed\
do eiusmod tempor incididunt ut labore et dolore magna aliqua." …Run Code Online (Sandbox Code Playgroud) 我正在尝试以简洁、简洁的方式编写 ValueError 消息:
raise ValueError("Model Architecture Not Recognized. Please ensure that your model's filename contains either"
""" "vgg" and "16" for a 16 layer VGG model, "vgg" and "19" for a 19 layer VGG model, or "nin" for a Network"""
" In Network model. Note that filenames are not case sensitive.")
Run Code Online (Sandbox Code Playgroud)
这对 Python 2.7 和 Python 3 都有效吗?有没有更好的方法来显示多行错误消息?+在用于错误消息的字符串之间不使用 a 是否有任何问题?
我有时需要使用多行字符串,但在嵌套块中。这有效,但可读性真的很差:
CONDITION1 = CONDITION2 = CONDITION3 = True
if CONDITION1:
if CONDITION2:
s = """jkljkj
dfkjslfds
sqjdlqkj"""
elif CONDITION3:
s = """azeazea
azeoiuaez
azeytzae
azetzae"""
Run Code Online (Sandbox Code Playgroud)
使用:
if CONDITION1:
if CONDITION2:
s = """jkljkj
dfkjslfds
sqjdlqkj"""
Run Code Online (Sandbox Code Playgroud)
(如Pythonic way to create a long multi-line string所建议的那样)不是一个选项,因为该字符串s将是:
jkljkj
dfkjslfds
sqjdlqkj
Run Code Online (Sandbox Code Playgroud)
带有不需要的左侧空格。
问题:如何在可读性好的嵌套块中使用多行字符串?
像Haskell这样的FP可以轻松绑定一个(var)名称,例如:
[(g y, h y) | x <- mylist, let y = f x]
Run Code Online (Sandbox Code Playgroud)
Python可能在以下位置执行此操作:
mylist = [f(x) for x in mylist]
mylist = [(g(y), h(y)) for y in mylist]
Run Code Online (Sandbox Code Playgroud)
Python 3.8中的Walrus赋值似乎是一种简化列表推导的技巧:
[(y := f(x), g(y), h(y)) for x in mylist]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,到目前为止被认为是pythonic的方式是什么?