0

我有这个:

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

它给:

TypeError: expected string or buffer

readlines 有错吗?

4

3 回答 3

1

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

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

您的代码也在混合变量,通过它迈出良好的一步,您要完成什么?你似乎混和line一堆lines

于 2012-12-29T15:18:53.453 回答
1

re.sub需要一个字符串作为第三个参数,你给它lines的是一个列表。此外,您在fin使用readlines. 您似乎正在尝试这样做:

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

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

于 2012-12-29T15:22:12.403 回答
0

我同意巴泰克

我能够完成这项工作。

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

文件 blah 的初始内容

维沙尔;希亚拉尼;诺诺; 完成;

最终输出

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

于 2012-12-29T16:06:04.737 回答