如何摆脱多个空格并考虑换行符

How to get rid of multiple whitespace AND account for a newline

假设我有一个输入 "Hello my name is \n Bill"

my_str = ' '.join(my_str.split())

所以这将加入字母并在我将其全部打印在一行时给我 "Hello my name is\nBill"。我想要它打印的是:

Hello my name is
Bill

到航站楼。

你的问题是你没有换行符,你有两个 反斜杠 和一个 n 即反斜杠被转义所以拆分后你需要做替换:

In [10]: s = "Hello   my    name  is \n Bill"

In [11]: print(" ".join(s.split()))
Hello my name is \n Bill

In [12]: print(" ".join(s.split()).replace("\n","\n"))
Hello my name is 
 Bill

或使用.decode("string_escape"):

In [15]: s = "Hello   my    name  is \n Bill"

In [16]: print" ".join(s.split())
Hello my name is \n Bill

In [17]: print(" ".join(s.split()).decode("string_escape"))
Hello my name is 
 Bill

正如 Kirby 在评论中提到的,如果您正在创建字符串,请不要转义反斜杠,如果数据来自其他来源,请使用上述方法之一。