我有这个:
fin = open(blah)
fin_lower= fin.readlines()
lines = [fin_lower.lower() for line in fin]
lines = line.split()
它给出了:
TypeError: expected string or buffer
readlines是不对的?
答案 0 :(得分:1)
readlines返回一个包含所有数据行的列表,看起来你有一个bug,你可能想要这样做:
lines = [line.lower() for line in fin_lower]
你的代码也在混合变量,通过它,你想要完成什么?您好像混合了line
和lines
。
答案 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']