python-3.x - 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')
解决方案
在您的情况下,歌曲不是字符串对象(因此没有替换功能),它是文件(阅读器)对象(TextIOWrapper)。
要获取字符串,您必须 read() 文件,
喜欢:
with open('songs.txt', 'r') as f:
content = f.read()
content.replace(alphabet, '')
代码中的歌曲也是如此,您不能迭代歌曲,您必须将文件读入字符串数组/列表。
推荐阅读
- python - 在熊猫数据框中的两列之间传输值
- c++ - 高效的 Kullback–Leibler 计算
- c++ - Why do I get a segmentation fault when fetching this variable?
- go - Google App Engine Flex Container Deployment Issues
- r - group two variables(in rows) in R to create one variable
- php - 计算总金额乘以 100 的折扣
- php - 当我添加斜线/在路由之后样式消失
- swift - 自己的“圆点”游戏 - 奇怪的行为
- javascript - 为什么 Object.keys 在 String、Boolean、Number 和 Object 的原型上不能按预期工作?
- c# - CSOM 不使用 Windows 凭据并给出“远程服务器返回错误:(403) Forbidden。” 错误