相关疑难解决方法(0)

TypeError:在Python3中写入文件时需要类似字节的对象,而不是'str'

我最近迁移到了Py 3.5.这段代码在Python 2.7中正常工作:

with open(fname, 'rb') as f:
    lines = [x.strip() for x in f.readlines()]

for line in lines:
    tmp = line.strip().lower()
    if 'some-pattern' in tmp: continue
    # ... code
Run Code Online (Sandbox Code Playgroud)

升级到3.5后,我得到了:

TypeError: a bytes-like object is required, not 'str'
Run Code Online (Sandbox Code Playgroud)

最后一行的错误(模式搜索代码).

我已尝试.decode()在语句的任何一侧使用该函数,也尝试过:

if tmp.find('some-pattern') != -1: continue
Run Code Online (Sandbox Code Playgroud)

- 无济于事.

我能够迅速解决几乎所有2:3的问题,但这个小小的陈述让我烦恼.

python string byte file python-3.x

497
推荐指数
10
解决办法
90万
查看次数

Python中的CSV在Windows上添加额外的回车符

在运行Windows XP专业版的Python 2.7中:

import csv
outfile = file('test.csv', 'w')
writer = csv.writer(outfile, delimiter=',', quoting=csv.QUOTE_MINIMAL)
writer.writerow(['hi','dude'])
writer.writerow(['hi2','dude2'])
outfile.close()
Run Code Online (Sandbox Code Playgroud)

它生成一个文件test.csv,每行有一个额外的\ r \n,如下所示:

test.csv

hi,dude\r\r\nhi2,dude2\r\r\n
Run Code Online (Sandbox Code Playgroud)

而不是预期的:

hi,dude\r\nhi2,dude2\r\n
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况,或者这实际上是期望的行为?

python windows csv newline

202
推荐指数
4
解决办法
14万
查看次数

如何在执行json.dump时显式设置回车符?

我的python脚本生成json文件.我必须支持这个在Windows和Linux上运行的python文件.问题是Windows和Linux上的回车差异.当我在Windows上运行此代码时,它输出CRLF json.当我在linux上运行它时输出LF json.

那么如何在python3.5中进行json转储时显式设置回车?我想

import json
fpath = "hoge.json"
data = {"AGE": 12, "HOGE": [{"GUA": 3}]}
with open(fpath, 'wt', encoding="utf-8") as outfile:
    json.dump(data, outfile, indent=4, sort_keys=True, ensure_ascii=False)
Run Code Online (Sandbox Code Playgroud)

http://docs.python.jp/3/library/json.html

python linux json carriage-return python-3.x

5
推荐指数
1
解决办法
4657
查看次数

标签 统计

python ×3

python-3.x ×2

byte ×1

carriage-return ×1

csv ×1

file ×1

json ×1

linux ×1

newline ×1

string ×1

windows ×1