呃,所以我正在处理解析器等问题,而且我将从一个处理文件的东西转到另一个。
我的代码的第一部分的输出是一个字符串列表;我认为每个字符串都是文本文件中的一行。
代码的第二部分需要一个文件类型作为输入。
所以我的问题是,有没有一种正确的,pythonic的方式将字符串列表转换为像对象一样的文件?
我可以将我的字符串列表写入文件,然后重新打开该文件,它可以正常工作,但如果没有必要,写入磁盘似乎有点傻。
我相信所有第二部分需要的是在文件上调用'read()'就像对象一样,所以我也可以用read作为方法定义一个新类,它返回一个长字符串,这是串联的所有的线串。
感谢, -nick
答案 0 :(得分:9)
StringIO
实现(几乎)所有stdio方法。例如:
>>> import StringIO
>>> StringIO.StringIO("hello").read()
'hello'
cStringIO是一个更快的对手。
要转换字符串列表,只需转发join
:
>>> list_of_strings = ["hello", "line two"]
>>> handle = StringIO.StringIO('\n'.join(list_of_strings))
>>> handle.read()
'hello\nline two'
答案 1 :(得分:3)
您可以在列表中使用StringIO和str.join,即
import StringIO
f = StringIO.StringIO("\n".join(lines))
假设行是你的行列表