0

私はこれを持っています:

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

それは与えます:

TypeError: expected string or buffer

ラインを読むのは間違っていますか?

4

3 に答える 3

1

readlinesはすべての行のデータを含むリストを返します。これはバグがあるようで、おそらくこれを実行したいと思うでしょう:

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

あなたのコードには変数も混在しています。それをうまく進めてください。何を達成しようとしていますか? あなたは混ざっlineているようですlines

于 2012-12-29T15:18:53.453 に答える
1

re.subは 3 番目の引数として文字列を期待しますが、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

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']

于 2012-12-29T16:06:04.737 に答える