python - 我在 python 中的列表由于某种原因被 [' '] 覆盖
问题描述
我有一个 python 程序,它从 csv 文件中读取生日列表并确定其中是否有今天。代码应该读取每一行,拆分输入,并将每个组件分配给适当的变量。这是代码:
# checks birthday list for any birthdays
for entry in birthday_list:
string = birthday_list.readline()
string = string[:-1]
info = string.split(',')
print(info)
name = info[0]
birth_day = int(info[1])
birth_month = int(info[2])
birth_year = int(info[3])
# sends message
if (day == birth_day and month == birth_month):
age = year - birth_year
wish_string = 'Happy ' + str(age) + determine_ordinal(age) + ' birthday, ' + name + '!\nhttps://imgur.com/a/G3wEPyg'
await channel.send(wish_string)
birthday_list.close()
真正的输出有个人信息,但这就是它的样子:
['Ponkachu', '7', '8', '2020']
['']
我在将birth_day 分配给 int(info[1]) 的行出现 IndexError
print(string) 打印“Ponkachu,7,8,2020”
如果我将 print(info) 更改为 print(info[1]),它会给我“7”,然后是 IndexError
如果我将其更改为 print(len(info)),我会得到:
4
1
我完全不知道为什么会这样。信息怎么了?为什么突然变了?
编辑:我刚刚检查了 csv 文件。“Ponkachu,7,8,2020”实际上是第二行,所以出于某种原因跳过了第一行。
编辑 2:原来 entry 被设置为第一行的输入。此代码按预期工作:
for entry in birthday_list:
info = entry.split(',')
info[3] = info[3][:-1]
name = info[0]
birth_day = int(info[1])
birth_month = int(info[2])
birth_year = int(info[3])
# sends message
if (day == birth_day and month == birth_month):
age = year - birth_year
wish_string = 'Happy ' + str(age) + determine_ordinal(age) + ' birthday, ' + name + '!\nhttps://imgur.com/a/G3wEPyg'
await channel.send(wish_string)
birthday_list.close()
解决方案
迭代已经从文件中读取了一行;调用readline
获取下一行(忽略混合迭代的危险以及readline
由于迭代器的内部缓冲)。
for entry in birthday_list:
info = entry.rstrip('\n').split(',')
print(info)
name = info[0]
birth_day = int(info[1])
birth_month = int(info[2])
birth_year = int(info[3])
# sends message
if day == birth_day and month == birth_month:
age = year - birth_year
wish_string = f'Happy {age}{determine_ordinal(age)} birthday, {name}!\nhttps://imgur.com/a/G3wEPyg'
await channel.send(wish_string)
birthday_list.close()
推荐阅读
- reactjs - 异步操作失败后推送到历史记录
- shell - grep if word value greater than value
- r - How do I make this 'mutate' sentences using loop or other functions in R?
- css - 如何使Vuetify网格与内部组件高度相同
- c# - How do i connect my two models to allow cards to be entered into a deck?
- python - 如何用条件元素组成一个列表
- c# - 尝试注册时出现 Microsoft.AspNetCore.Identity.IdentityError
- javascript - 在 javascript/typescript 代码中为云功能设置超时
- html - 如何在 WordPress 的 weglot 插件的下拉按钮中获得圆角边框?
- java - Aspect to find all the pointcuts executed at runtime