为什么使用for循环将'\n'存储为一个项?

2024-03-29 09:22:09 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题主要与我想更好地理解python是如何工作的有关。你知道吗

所以我只做了一个简单的函数,它是.split()函数的一个更动态的版本(它允许多个拆分,其中一个是'\n',这样我可以更好地格式化一些CSV信息),但是我不知道它的一个方面为什么工作。当您使用for循环(如-for letter in string)遍历字符串(如"Hello there!\nGeneral Kenobi.")时,为什么'letter'变量将'\n'存储为一个字符串,而不是'\'并在下一次迭代中'n'?你知道吗

我知道的代码是这样做的:

myString = "This is a string\nThis is a string"
for letter in myString:
    print(repr(letter))

说清楚一点,我喜欢它这样做,但我只想知道为什么。你知道吗

谢谢!你知道吗


Tags: csv函数字符串in版本信息hellofor
3条回答

在字符串文本(reference page for python 3)中,转义字符,那些以反斜杠“\”开头的字符被替换,并根据一些规则进行解释。通过在字符串文本前面加上字母“r”或“R”,可以强制python将“\”(反斜杠)解释为单个字符。你知道吗

因此“\n”实际上是源代码中的两个字符,但它被python解释为ASCII字符“换行符”

关于用户输入的说明

Python2的input()传递的字符串与字符串文本(您在代码中定义的字符串,只需将它们写在引号之间)的处理方式相同。在这两种情况下,“\n”被解释为单行换行符。你知道吗

另一方面,Python3的input()和Python2的raw_input()读取原始字符串,\n”被解释为两个字符。你知道吗

所以如果在你的例子中(我假设Python3),你使用

myString = input()

并将“This is a string\nThis is a string”作为输入,则for循环将分别迭代“\”和“n”。你知道吗

因为它是一个字符。在许多上下文中,\通常是一个“转义”字符,这意味着它和后面的字符不是字符串的一部分,而是一个字符或其他结构的表示形式,这些字符或结构没有书面表示形式,或者在该上下文中不容易忠实地呈现(例如换行符)。字符串中的文字\n将被呈现为\\n,实际上(其中\本身必须转义,以指示它是文字\)。你知道吗

在我们所看到的“字符”和python所看到的\n之间存在不匹配,每一个都有自己的含义。但是Python读取\n,因为\表示*忽略下一个字符。因此python读取\n而不是\n。这个\n对于python是“行尾”,因此我们不应该将其解释为\n\n),而应该解释为end of line(enter)。你知道吗

*过于简单化

相关问题 更多 >