首页 > 解决方案 > AttributeError:“_io.TextIOWrapper”对象没有“替换”属性

问题描述

我正在尝试创建一个关于猜名字的小测验。当我从字符串中删除小写字符时出现错误,而且由于我还是 Python 新手,所以我没有关于修复它的线索。我需要做什么才能解决它?

artists = open('artists.txt') ## IF YOU WANT TO EDIT THE SONG NAMES AND ARTISTS
songs = open('songs.txt') ## YOU NEED TO LEAVE THEM IN ORDER

songfilter = 'abcdefghijklmnopqrstuvwxyz\/' #Lowercase Alphabet With Some Slashes To Remove "/n"

songsFiltered = [songs.replace(alphabet, '') for w in songs]

guessList = list(zip(artists, songs))

songSelect = random.choice(guessList)

print(songSelect)

我希望收到一个输出,比如

('Billie Eilish', 'B G')

标签: python-3.x

解决方案


在您的情况下,歌曲不是字符串对象(因此没有替换功能),它是文件(阅读器)对象(TextIOWrapper)。

要获取字符串,您必须 read() 文件,

喜欢:

with open('songs.txt', 'r') as f:
   content = f.read()
   content.replace(alphabet, '')

代码中的歌曲也是如此,您不能迭代歌曲,您必须将文件读入字符串数组/列表。


推荐阅读