在python中有没有解码str的方法?属性错误:';str';对象没有属性';解码';

在python中有没有解码str的方法?属性错误:';str';对象没有属性';解码';,python,utf-8,decode,Python,Utf 8,Decode,我需要解码文件中的文本 从 b'我知道你对mba的感觉,比如说,Juangan\xf0\x9f\x98\x90' 到 b我知道你的感受 但是我有 “b我知道你对mba的感觉,比如说,王安xf xf x x” 我试着解码,但我出错了 AttributeError:“str”对象没有属性“decode” tok = WordPunctTokenizer() pat1 = r'@[A-Za-z0-9]+' pat2 = r'https?://[A-Za-z0-9./]+' combined_pat =

我需要解码文件中的文本

从 b'我知道你对mba的感觉,比如说,Juangan\xf0\x9f\x98\x90'

到 b我知道你的感受

但是我有 “b我知道你对mba的感觉,比如说,王安xf xf x x”

我试着解码,但我出错了
AttributeError:“str”对象没有属性“decode”

tok = WordPunctTokenizer()
pat1 = r'@[A-Za-z0-9]+'
pat2 = r'https?://[A-Za-z0-9./]+'
combined_pat = r'|'.join((pat1, pat2))
def tweet_cleaner(tweet):
    soup = BeautifulSoup(tweet)
    souped = soup.get_text()
    stripped = re.sub(combined_pat, '', souped)
    clean = stripped.decode("utf-8","strict").replace(u"\ufffd", "?")
    letters_only = re.sub("[^a-zA-Z]", " ", clean)
    lower_case = letters_only.lower()
    # During the letters_only process two lines above, it has created unnecessay white spaces,
    # I will tokenize and join together to remove unneccessary white spaces
    words = tok.tokenize(lower_case)
    return (" ".join(words)).strip()
testing = df.tweet[:100]
test_result = []
for t in testing:
    test_result.append(tweet_cleaner(t))
test_result```

字符串已被解码。你不能再破译它们了

你只能对它们进行编码

事实上,字符串是一个unicode字母序列

字节字符串是字节序列

字节可以解码成字符串。
字符串可以编码为字节

如果您从beautifulsoup获得一个字符串,那么它已经对字节进行了一些解码,或者已经输入了一个字符串

也许您可以给出一个非常小的示例string/html文件来解释您的确切问题


我们可以尝试解决您的具体问题。

字符串已经解码。你不能再破译它们了

你只能对它们进行编码

事实上,字符串是一个unicode字母序列

字节字符串是字节序列

字节可以解码成字符串。
字符串可以编码为字节

如果您从beautifulsoup获得一个字符串,那么它已经对字节进行了一些解码,或者已经输入了一个字符串

也许您可以给出一个非常小的示例string/html文件来解释您的确切问题


我们可以尝试解决您的具体问题。

我认为解码是一种对字符串进行编码的方法。要检查这一点,请为变量“b”分配一个随机字符串,然后键入dir(b),再键入dir(b.encode())。您将看到decode是一种仅用于encode的方法,而bithink decode是一种用于编码字符串的方法。要检查这一点,请为变量“b”分配一个随机字符串,然后键入dir(b),再键入dir(b.encode())。您将看到decode是一种仅适用于encode bis的方法。是否有任何方法可以重新使用此表情符号代码\xf0\x9f\x98\x90?奇怪的是,您在这里显示的内容看起来更像字节字符串的内容。您是否可以创建一条非常小的tweet,并在代码中添加两条print语句。第一次打印
print(“Tweet=%r”%Tweet)
行前
soup=BeautifulSoup(Tweet)
行后
souped=soup.get_text()
添加第二次打印
print(“souped=%r”%souped)
这应该有助于我们重现问题。是否有任何方法可以重新使用此表情符号代码\xf0\x9f\x98\x90?奇怪的是,这里显示的内容更像是字节字符串的内容。您是否可以创建一条非常小的tweet,并在代码中添加两条print语句。第一次打印
print(“Tweet=%r”%Tweet)
行前
soup=BeautifulSoup(Tweet)
行后
souped=soup.get_text()
添加第二次打印
print(“souped=%r”%souped)
这将有助于我们重现问题