簡體   English   中英

如何從字符串中逐字獲取?

[英]How to get word by word from a string?

為了進行情感分析,我想分析一個句子中的每個單詞。 我想將每個單詞存儲在變量中,然后進行處理。 我使用以下代碼,但收到一條錯誤消息:

屬性錯誤:“列表”對象沒有屬性“分割”

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

以上問題的解決方案是什么?

這是您的代碼中發生的事情:

  1. line = "..." -line是一個字符串
  2. while line: -開始循環,因為非空字符串的值為True
  3. line = line.split(" ") -按空格split lineline現在是一個列表
  4. print '\\n' n'-打印換行符
  5. while line: -非空列表評估為True ,因此再次循環
  6. line = line.split(" ") - line是一個列表,因此AttributeError

我不確定為什么while這里使用while循環,您可能想要:

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

這里的問題實際上是當循環達到其第二個迭代行時不再是字符串。 因此邏輯上說是對象行不是None(如果是),請在其上運行split。 但是,現在這行是一個列表。 你真正想要的是

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

有兩種方法:

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

只需將字符串拆分一次: wordList = line.split()並使用wordList進行迭代:

for x in wordList:
    doWork...

ps:我不太明白為什么要在循環的每次迭代中打印換行符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM