0

我有几行 Python 代码可以读取一个文件(1 列 x 900 行),然后从列表中创建一个 JSON 对象。我遇到的问题是尝试从列表中的每个项目中删除换行符时。这里有一些例子:

阅读此代码大约需要 11 秒(900 行):

fh = open(wholefName)
fc = fh.read()
fh.close()

此代码大约需要 17 分钟:

fh = open(wholefName)
fc = fh.read()
fh.close()
markerArray = fc.splitlines()

相反,如果我使用“fc = fh.readlines”,那么列表中的每个项目的末尾都有一个“\n”。我还尝试将 .split() 放在 json_list def 中:“lst.append(pn.split())”。

这是我的完整代码的样子:

def json_list(list):
  lst = []
  for pn in list:
    lst.append(pn)
  return json.dumps(lst)

fh = open(wholefName)
fc = fh.read()
fh.close()
markerArray = fc.splitlines()

print json_list( markerArray )

我在 Windows 上使用 Python 2.6.2* *运行Jython 。

* *编辑:抱歉,我们在 Windows 上运行 Python 2.5.2。

4

2 回答 2

3

如果删除函数调用(这是没用的),它应该更快。

with open(wholefName) as fh:
    json.dumps(fh.read().splitlines())

要注意的另一件事是,在 Python 2 中,该json模块有两个版本:一个是用纯 Python 编写的,另一个是用 C 编写的。据我所知,Jython 不支持 C 扩展,很可能您正在使用 Python 版本,这必然会更慢。最好的办法是用 Java 编写代码。

于 2013-07-15T17:21:42.020 回答
1

将文本文件转换为 json 编码字符串的最佳方法是:

def file_to_json(filename):
    return json.dumps([l.strip() for l in open(filename)])

如果你真的只想将结果保存到一个新文件,你可以跳过中间的东西:

def file_to_json(from_filename, to_filename):
    json.dump([l.strip() for l in open(from_filename)],
        open(to_filename, 'w'))
于 2013-07-15T18:22:48.343 回答