为什么我会得到一个附加的';i';在Python中使用.writelines()时字符串末尾的字符?

为什么我会得到一个附加的';i';在Python中使用.writelines()时字符串末尾的字符?,python,Python,我使用python代码获得3个输入并写入一个文件,但当我查看/tmp下名为output.txt的文件时,我看到字符串末尾添加了一个“I”。举例来说,当我分别作为输入a、b和c给出时,我得到这样一个输入:a b ci。我可以做些什么来解决这个问题 name = raw_input("Name:") email = raw_input("Email:") phone = raw_input("Telephone:") a=open("/tmp/output.txt"

我使用python代码获得3个输入并写入一个文件,但当我查看/tmp下名为output.txt的文件时,我看到字符串末尾添加了一个“I”。举例来说,当我分别作为输入a、b和c给出时,我得到这样一个输入:a b ci。我可以做些什么来解决这个问题

    name = raw_input("Name:")
    email = raw_input("Email:")
    phone = raw_input("Telephone:")

    a=open("/tmp/output.txt","w")
    a.writelines( name+' '+email+' '+phone)
    a.close()
试印

print phone

要查看变量“phone”的内容是否是您期望的内容,请执行以下操作:

$ cat >/tmp/t <<_EOF_
> name = raw_input("Name:")
> email = raw_input("Email:")
> phone = raw_input("Telephone:")
>
> a=open("/tmp/output.txt","w")
> a.writelines( name+' '+email+' '+phone)
> a.close()
> _EOF_

$ (echo "John Smith"; echo "nobody@example.com"; echo "123-45-678") | python /tmp/t

$ hexdump -C /tmp/output.txt
00000000  4a 6f 68 6e 20 53 6d 69  74 68 20 6e 6f 62 6f 64  |John Smith nobod|
00000010  79 40 65 78 61 6d 70 6c  65 2e 63 6f 6d 20 31 32  |y@example.com 12|
00000020  33 2d 34 35 2d 36 37 38                           |3-45-678|
00000028
$cat>/tmp/t电子邮件=原始输入(“电子邮件:”)
>电话=原始输入(“电话:”)
>
>a=打开(“/tmp/output.txt”,“w”)
>a.书面语(姓名+电子邮件+电话)
>a.结束()
>_EOF_
$(回声“约翰·史密斯”;回声”nobody@example.com“echo”123-45-678“| python/tmp/t
$hextump-C/tmp/output.txt
00000000 4a 6f 68 6e 20 53 6d 69 74 68 20 6e 6f 62 6f 64 | John Smith nobod|
000000 10 79 40 65 78 61 6d 70 6c 65 2e 63 6f 6d 20 31 32|y@example.com 12|
000000 20 33 2d 34 35 2d 36 37 38 | 3-45-678|
00000028

要么是
手机
的末尾有
'i'
,要么是后来的东西在文件中附加了
'i'


.writelines()
接受字符串序列。它在这里工作是偶然的(任何字符串也是一个字符串序列)。要将字符串写入文件,可以使用
.write()
。如果需要,在末尾添加
'\n'
;无论是
.writelines()
还是
都不要为您添加换行符。

在将数据写入文件之前,请尝试打印
名称+''+电子邮件+''+电话
您希望在文件中显示什么?我尝试了,但没有成功?您的命令提示符是什么样子的?可能您正在将电话号码存储为一个复杂的号码。(开玩笑)