我有一个包含数据库主键和字符串的字典。
self.mydict = {
1:'a small example'
,2:'some sentence'
,3:'a very long string around 30k characters'
}
对于字符串长度为<1000的键值对,一切都会像我期望的那样标记化。
对于一些非常大的字符串(长度= 30,000),令牌生成器在我的csv输出中返回多条虚线。
def write_data(self):
headers=[]
for x,y in self.mydict.items():
headers.append([word_tokenize(y)])
print(len(y))
with open(self.outputdata, 'w', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
for item in headers:
writer.writerow(item)
将结果写入csv,我得到以下信息:
['a','small','example']
['some','sentence']
['a','very','long',
string','around','30k','characters']"
因此30k长度的字符串由于某种原因而中断,并且似乎拆分为另一行。我可以截断字符串的第一个〜1000个字符,这个问题就消失了,但是在进行自然语言处理时,我宁愿保留长字符串。这个错误是由于字符串的长度还是我编写csv的方式引起的?
答案 0 :(得分:1)
否,NLTK的word_tokenize()
函数没有字符串长度限制。
但是csv.writer
对字段大小有限制,请参见https://docs.python.org/3.4/library/csv.html?highlight=csv#csv.field_size_limit