В настоящее время я работаю над диссон-ботом для веб-приложения, которое я планирую создать в будущем и которое использует Pandas для создания кадра данных, в котором хранятся все возможные отбрасывания из экземпляра в WoW. Я создал этого бота, чтобы принимать пользовательский ввод, такой как «! Loot fabric», чтобы хранить «fabric» в качестве аргумента и передавать его в функцию .lo c для поиска в столбце «itemtype» для «fabric». Я сталкиваюсь с интересной ошибкой, где это не работает, если я ищу «кожу».
Это пример кожаной части моего информационного кадра:
itemname itemtype itemslot stat1 stat2 source
-- ---------------------------------- ---------- ---------- ------- ------- ----------------------------
32 Corpuscular Leather Greaves leather feet crit mastery Carapace of N'Zoth
33 Cord of Anguished Cries Leather waist haste mastery Dark Inquisitor Xanesh
34 Gloves of Abyssal Authority leather hands haste mastery Drest'agath
35 Spaulders of Aberrant Allure leather shoulders azerite Il'gynoth, Corruption Reborn
36 Belt of Braided Vessels Leather waist haste vers Il'gynoth, Corruption Reborn
37 Stygian Guise leather head azerite Maut
38 Boots of Manifest Shadow leather feet haste mastery Maut
39 Pauldrons of the Great Convergence leather shoulders azerite N'Zoth the Corruptor
40 Bracers of Dark Prophecy leather wrists crit haste Prophet Skitra
41 Macabre Ritual Pants leather legs crit vers Prophet Skitra
42 Gibbering Maw leather head azerite Ra-den the Despoiled
43 Wristwraps of Volatile Power leather wrists haste mastery Shad'har the Insatiable
44 Chitinspine Gloves leather hands vers mastery The Hivemind
45 Darkheart Robe leather chest azerite Vexiona
46 Onyx-Imbued Breeches leather legs vers mastery Wrathion, the Black Emperor
Как вы можете видеть, эти элементы хранятся в виде 'leather' в столбце 'itemtype', с сохранением 2 как «Кожа» в попытке отладить проблему.
if message.content.startswith('!loot'):
arg = message.content.lstrip('!loot ')
if arg == '1h':
await message.channel.send('`' + tabulate(df1h, headers='keys', tablefmt='simple') + '`')
elif arg == '2h':
await message.channel.send('`' + tabulate(df2h, headers='keys', tablefmt='simple') + '`')
else:
result = df1.loc[df1['itemtype'] == arg]
await message.channel.send('`' + tabulate(result, headers='keys', tablefmt='simple') + '`')
Это кусок кода, который я использую для обработки ввода пользователя и манипулирования моим фреймом данных, чтобы дать мне информацию, которую запрашивает пользователь. Моя проблема в том, что когда кто-то печатает «! Loot leather», вывод:
itemname itemtype itemslot stat1 stat2 source
---------- ---------- ---------- ------- ------- --------
Но когда они посылают команду «! Loot Leather», в результате получается:
itemname itemtype itemslot stat1 stat2 source
-- ----------------------- ---------- ---------- ------- ------- ----------------------------
33 Cord of Anguished Cries Leather waist haste mastery Dark Inquisitor Xanesh
36 Belt of Braided Vessels Leather waist haste vers Il'gynoth, Corruption Reborn
По какой-то причине он не будет возвращать результаты, если строки сохранены с использованием строчной буквы в столбце itemtype. Имейте в виду, что это работает как предназначено для других переменных в столбце typetype, таких как «ткань», «тарелка», «почта», «аксессуары» и т. Д. c. Для меня было бы возможно просто манипулировать их вводом в заглавную букву первой буквы, но я чувствую, что это бандитское решение.
Есть мысли? Я довольно новичок в python, <1 месяц общего опыта, но эта проблема довольно загадочная для меня, и я не могу получить какую-либо помощь от / r / learn python subreddit и диссонанса python , Любая помощь будет принята с благодарностью. </p>