【问题标题】:Getting list of string array into separate string arrays in python在python中将字符串数组列表放入单独的字符串数组中
【发布时间】:2017-03-08 19:32:47
【问题描述】:

这是我的代码。

SENTENCE = "He sad might have lung cancer. It’s just a rumor."
sent=(sent_tokenize(SENTENCE))

输出是

['He sad might have lung cancer.', 'It’s just a rumor.']

我想得到这个数组

['He sad might have lung cancer.']
['It’s just a rumor.']

他们有什么办法吗?如果有,怎么办?

【问题讨论】:

  • 嗯,您是否有理由希望每个字符串都在列​​表中?似乎没有多大意义..除非我错过了什么。
  • [[x] for x in ['He sad might have lung cancer.', 'It’s just a rumor.']]

标签: python arrays tokenize


【解决方案1】:

既然要按照句子进行拆分,那么就可以这么干:

sentence_list = SENTENCE.split('.')
for sentence in sentence_list:
    single_sentence = [sentence + '.']

如果您确实希望所有列表都包含同一数据结构中的单个句子,则必须使用列表列表或字典:

my_sentences = []

sentence_list = SENTENCE.split('.')
for sentence in sentence_list:
    my_sentences.append([sentence + '.'])

使用列表推导来缩短它:

my_sentences = [[sentence + '.'] for sentence in SENTENCE.split('.')]

唯一的罪魁祸首是句子拆分部分会更频繁地发生,因此处理大量句子会变慢。

【讨论】:

  • 这正是我所需要的。谢谢。
【解决方案2】:

使用re.split()函数的解决方案:

import re 

s = "He sad might have lung cancer. It’s just a rumor."
parts = [l if l[-1] == '.' else l + '.' for l in re.split(r'\.\s?(?!$)', s)]
print(parts)

输出:

['He sad might have lung cancer.', 'It’s just a rumor.']

r'\.\s?(?!$)' 模式,将分隔符定义为.,除了文本末尾的(?!$)

l if l[-1] == '.' else l + '.' - recovering . 在每一行的末尾(因为分割时没有捕获分隔符)

【讨论】:

  • 感谢您的回答。连这个答案都出乎我的意料,这也是我从你的回答中学到的新东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多