python - Python:为什么将数组转换为以换行符作为分隔符的唯一字符串如此困难?
问题描述
我有一个这样的数组:
names = [ 'John', 'Mary', 'Mike' ]
我需要实例化一个新字符串,每个名称由一个新行分隔\n
我已经尝试过joined_string = '\n'.join(names)
但没有成功。另一种尝试是使用 F-String (甚至是普通的字符串连接+
或"%s\n" % (name)
joined_string = ""
for name in names:
joined_string += f"{name}\n"
我所有的测试,总是给出这样的输出
John\nMary\nMike
所需的输出是这样的新字符串:
joined_string = '''John
Mary
Mike
'''
我需要内容在变量中,而不需要使用print
语句。
编辑:我在 Python 3.6 中运行的实际代码
names = ['John', 'Mary', 'Mike']
joined_string = '\n'.join(names)
print(joined_string)
控制台输出给出:
John\nMary\nMike
预期输出:
John
Mary
Mike
我知道这看起来很奇怪,但我的 Python 3.6 给出了那个输出。
对于那些不相信的人:
解决方案
您将字符串的字符串表示与字符串本身混淆了。
>>> str1 = "\n".join(["John", "Mary", "Mike"])
>>> str2 = """John
... Mary
... Mike"""
>>> str1 == str2
True
当你使用
>>> "\n".join(["John", "Mary", "Mike"])
'John\nMary\nMike'
您将看到 Python 的str
值表示:引号定界但不是字符串的一部分,并且\n
只是str.__repr__
用于显示换行符的视觉表示。当你使用
>>> print("\n".join(["John", "Mary", "Mike"]))
John
Mary
Mike
您没有使用 更改值,print
您只是将每个字符写入终端,终端通过将光标移动到下一行的开头而不是显示任何特定的可见字符来“显示”换行符。
推荐阅读
- git - 如何在当前分支中添加以前的提交作为新的 HEAD
- python - ame 'leads' 未定义/无法调用 SORT_LEAD(LEADS)
- c - 如何为每个客户端创建一个唯一的命名管道
- python - 如何在元数据之后读取 CSV?
- google-apps-script - 如何在谷歌侧边栏中取消以前的服务器请求
- kindle - Kindle DX “您的 Kindle 目前无法连接。”
- sql - SQL 在每个记录列表中获取第一个记录
- python - 带有 BeautifulSoup 的 Python Selenium:绕过 PHP 重定向?
- node.js - dotenv 文件未在快速应用程序中加载环境变量
- python - 在删除熊猫中的重复项时保持第一次出现