vrk*_*esh 22 python file-handling
try:
data=open('info.txt')
for each_line in data:
try:
(role,line_spoken)=each_line.split(':',1)
print(role,end='')
print(' said: ',end='')
print(line_spoken,end='')
except ValueError:
print(each_line)
data.close()
except IOError:
print("File is missing")
Run Code Online (Sandbox Code Playgroud)
当逐行打印文件时,代码往往会在前面添加三个不必要的字符,即"".
实际产量:
Man said: Is this the right room for an argument?
Other Man said: I've told you once.
Man said: No you haven't!
Other Man said: Yes I have.
Run Code Online (Sandbox Code Playgroud)
预期产量:
Man said: Is this the right room for an argument?
Other Man said: I've told you once.
Man said: No you haven't!
Other Man said: Yes I have.
Run Code Online (Sandbox Code Playgroud)
sen*_*hin 45
我找不到Python 3的副本,它处理编码的方式与Python 2不同.所以这里是答案:不是用默认编码打开文件(即'utf-8'),使用'utf-8-sig',期望和剥离UTF- 8字节顺序标记,显示为.
也就是说,而不是
data = open('info.txt')
Run Code Online (Sandbox Code Playgroud)
做
data = open('info.txt', encoding='utf-8-sig')
Run Code Online (Sandbox Code Playgroud)
请注意,如果您使用的是Python 2,您应该看到例如Python,将输出编码为UTF-8并将带有BOM的UTF-8转换为UTF-8,而在Python中没有BOM.你需要在Python 2中使用codecs或者使用它来做一些恶作剧str.decode.但是在Python 3中,你需要做的就是encoding=在打开文件时设置参数.
| 归档时间: |
|
| 查看次数: |
16299 次 |
| 最近记录: |