python中的预期字符串或缓冲区

时间:2012-12-29 15:15:14

标签: python

我有这个:

fin = open(blah)
fin_lower= fin.readlines()
lines = [fin_lower.lower() for line in fin]
lines = line.split()

它给出了:

TypeError: expected string or buffer

readlines是不对的?

3 个答案:

答案 0 :(得分:1)

readlines返回一个包含所有数据行的列表,看起来你有一个bug,你可能想要这样做:

lines = [line.lower() for line in fin_lower]

你的代码也在混合变量,通过它,你想要完成什么?您好像混合了linelines

答案 1 :(得分:1)

re.sub期望一个字符串作为第三个参数,你给它lines这是一个列表。此外,在使用fin消费所有行后,您将迭代readlines。你似乎想要这样做:

with open(blah) as fin:
    lines = [line.lower().replace(',', '').split() for line in fin]

另请注意,您不需要re进行文字替换。

答案 2 :(得分:0)

我同意Bartek

我能够完成这件事。

import os
import signal
import time
import sys
import re
import string

fin = open('blah','r')
fin_lower= fin.readlines()

lines=""

for line in fin_lower:
lines += line.lower()


line = re.sub(';',' ',lines)
lines = line.split()
print lines

文件的初始内容等等

VISHAL; KHIALANI; NONOE; CANGETITDONE;

最终输出

['vishal','khialani','nonoe','cangetitdone']