Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 自动更正功能出错:字符串2列表_Python_String_List - Fatal编程技术网

Python 自动更正功能出错:字符串2列表

Python 自动更正功能出错:字符串2列表,python,string,list,Python,String,List,我正在尝试自动更正提取的推文中的单词。我检查了文本类型。 但是错误是“AttributeError:'list'对象没有属性'lower'” i、 这是一个列表对象…我如何解决这个问题 我对python很陌生。。。请帮我纠正这个错误 text=remove_punctuation(clean_emoji(remove_rt(strip_links(tweet.text)))) print(type(text)) #SOURCE_CODE: https://norvig.com/spell-

我正在尝试自动更正提取的推文中的单词。我检查了文本类型。

但是错误是“AttributeError:'list'对象没有属性'lower'” i、 这是一个列表对象…我如何解决这个问题

我对python很陌生。。。请帮我纠正这个错误

text=remove_punctuation(clean_emoji(remove_rt(strip_links(tweet.text))))
print(type(text)) 

#SOURCE_CODE: https://norvig.com/spell-correct.html

def words(text): return re.findall(r'\w+', text.lower())
WORDS = Counter(words(open('C:/Users/Paromita/Desktop/Travel Recommendation/big.txt').read()))     #count all the words in "big.txt" document
                                                                                                   #import Counter
def P(word, N=sum(WORDS.values())):                                                                #provides probability of the word
    return WORDS[word] / N

def known(words):                                                                                  #The subset of `words` that appear in the dictionary of WORDS.
    return set(w for w in words if w in WORDS)

def edits1(word):                                                                                  #All edits that are one edit away from `word`
    letters    = 'abcdefghijklmnopqrstuvwxyz'
    splits     = [(word[:i], word[i:])    for i in range(len(word) + 1)]
    deletes    = [L + R[1:]               for L, R in splits if R]
    transposes = [L + R[1] + R[0] + R[2:] for L, R in splits if len(R)>1]
    replaces   = [L + c + R[1:]           for L, R in splits if R for c in letters]
    inserts    = [L + c + R               for L, R in splits for c in letters]
    return set(deletes + transposes + replaces + inserts)

def edits2(word):                                                                                  #All edits that are two edits away from `word`
    return (e2 for e1 in edits1(word) for e2 in edits1(e1))

def candidates(word):                                                                              #Generate possible spelling corrections for word.
    return (known([word]) or known(edits1(word)) or known(edits2(word)) or [word])

def correction(word):                                                                              #  Most probable spelling correction for word
    return max(candidates(word), key=P)

def autocorrect(word):
    for w in words(text):
        word=word.replace(w,correction(w))
    return word
错误:

<ipython-input-124-2d46c58aaf5d> in autocorrect(word)
     29 
     30 def autocorrect(word):
---> 31     for w in words(text):
     32         word=word.replace(w,correction(w))
     33     return word

<ipython-input-124-2d46c58aaf5d> in words(text)
      1 #SOURCE_CODE: https://norvig.com/spell-correct.html
      2 
----> 3 def words(text): return re.findall(r'\w+', text.lower())
      4 WORDS = Counter(words(open('C:/Users/Paromita/Desktop/Travel Recommendation/big.txt').read()))     #count all the words in "big.txt" document
      5                                                                                                    #import Counter

AttributeError: 'list' object has no attribute 'lower'
自动更正中的
(word)
29
30 def自动更正(word):
--->31对于w,大写(文本):
32字=字。替换(w,更正(w))
33返回字
大写(文本)
1#源代码:https://norvig.com/spell-correct.html
2.
---->3个def单词(text):返回re.findall(r'\w+',text.lower())
4字=计数器(字(打开('C:/Users/Paromita/Desktop/Travel Recommension/big.txt').read())#计算“big.txt”文档中的所有字
5#进口柜台
AttributeError:“list”对象没有属性“lower”

看起来像
文本
是一个字符串列表

试试看:

def words(text):
    return re.findall(r'\w+', " ".join(text).lower())

添加相关代码。。。正如错误所说,您正在使用
列表上的
替换
,而不是
str
ḧ如果你不发布导致错误的源代码,有谁能帮助你呢?请拿起这本书,仔细阅读,并提供一份能再现您的问题的报告。