def main():
sent_file = open(sys.argv[1])
tweet_file=open(sys.argv[2])
scores={}
for line in sent_file:
term, score=line.split("/t")
scores[term]=int(score)
sent_file是这样的:
abandon -2
abandoned -2
每个人都用\t
隔开,有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
您希望跳过没有\t
的空行或行,只是在这些情况下捕获ValueError
异常:
for line in sent_file:
try:
term, score = line.split("\t")
scores[term] = int(score)
except ValueError:
pass
但是,从评论看来,你的数据也是空格分隔的('abilities 2\n'
在行中没有\t
个字符),所以也许你应该拆分一般的空格:< / p>
for line in sent_file:
try:
term, score = line.rsplit(None, 1) # split on last whitespace separator
scores[term] = int(score)
except ValueError:
pass
现在你要拆分行上的最后一个任意宽度分隔符(不计算开头和结尾的空格),只拆分一次。如果您的任何术语也包含空格,则可确保保留它们。这假定您的分数值中没有任何空格(这也会破坏您自己的代码)。
如果您确定所有拥有的\t
分隔数据,或者您可以清理输入文件以仅使用标签,则可以选择使用csv
模块,以及使用词典理解:
import csv
with open(sys.argv[1], 'rb') as sent_file:
reader = csv.reader(sent_file, delimiter='\t')
scores = {term: int(score) for term, score in reader}