如何从字符串中逐字逐句获取?

时间:2014-01-30 16:20:15

标签: python

出于情感分析的目的,我想分析句子中的每个单词。我想将每个单词存储在变量中,然后处理它。我使用以下代码,并收到一条错误消息:

  

属性错误:'list'对象没有属性'split'

line = ' hello this is a test sentence'
   while line:
       line=line.split(' ')
       print '\n'

上述问题的解决方案是什么?

4 个答案:

答案 0 :(得分:5)

以下是您的代码中发生的事情:

  1. line = "..." - line是一个字符串
  2. while line: - 开始循环,因为非空字符串的计算结果为True
  3. line = line.split(" ") - split line按空格,line现在是一个列表
  4. print '\n' - 打印换行符
  5. while line: - 非空列表评估True,因此再次循环
  6. line = line.split(" ") - line是一个列表,因此AttributeError
  7. 我不确定你为什么在这里使用while循环,你可能想要:

    for word in line.split(" "):
        print word
        # ... process word
    

答案 1 :(得分:1)

这里的问题实际上是当循环命中它的第二个迭代线时不再是一个字符串。所以逻辑说是对象线而不是如果是,则运行拆分。但是在这一点上,行现在是一个列表。 你真正想要的是

   line = 'hello this is a sentance'
    words = line.split()
    for w in words:
        print w

答案 2 :(得分:0)

以下是两种方式:

string.split(' ') ?

>>> a="1.MATCHES$$TEXT$$STRING"
>>> a.split("$$TEXT$$")
['1.MATCHES', 'STRING']

>>> a="2.MATCHES $$TEXT$$ STRING"
>>> a.split("$$TEXT$$")
['2.MATCHES ', ' STRING']

>>> [x.strip() for x in "2.MATCHES $$TEXT$$ STRING".split("$$TEXT$$")]
['2.MATCHES', 'STRING']

所以最好的是你不必循环,你必须分配它并使用它。

a="my;string;here"
a = a.split(";")
for w in a:
    print w

答案 3 :(得分:0)

只需将字符串拆分一次:wordList = line.split() 并使用wordList迭代:

for x in wordList:
    doWork...

p.s。:我不太明白为什么你会在循环的每次迭代中打印一个换行符。