我正在尝试创建代码,以在一个单元格中搜索颜色值(例如“蓝色”),如果在该单元格中找到了该值,则将该值粘贴到另一个单元格中,并重复几次一百种颜色。
一旦发生这种情况,请对该列中的下一个单元格再次执行相同的过程,然后粘贴到相应行中的另一个单元格中,直到在每个填充的单元格中搜索了所有颜色值为止。
我已经有了创建Excel工作表的代码,该工作表将提取一些预定义的值,但是我不确定如何将代码扩展为包括数百种不同的颜色。
#Excel Project to fill attributes quickly.
#Importing Modules
import os, openpyxl
#defining variables
wb = openpyxl.Workbook()
sheet = wb['Sheet']
#Asking for your category
x = input('What is your category?')
#Writing header
sheet['A1'] = 'Short Description'
sheet['B1'] = 'Long Description'
sheet['C1'] = 'Item'
sheet['J1'] = 'Color'
#writing attribute values
sheet['A2'] = 'Amazing blue shiny fantastic shirt ee-9003'
sheet['A3'] = 'Red dull jacket'
#Writing values for "Color"
if 'Red' or 'red' in sheet['A2'].value:
sheet['J2'] = 'Red'
elif 'Orange' or 'orange' in sheet['A2'].value:
sheet['J2'] = 'Orange'
elif 'Blue' or 'blue' in sheet['A2'].value:
sheet['J2'] = 'Blue'
if 'Red' or 'red' in sheet['A3'].value:
sheet['J3'] = 'Red'
elif 'Blue' or 'blue' in sheet['A3'].value:
sheet['J3'] = 'Blue'
#Saving to your desktop
os.chdir(r'E:\Desktop')
wb.save('Attributes_filled_' + str(x) + '.xlsx')
到目前为止,我希望代码第一次为我的代码生成“蓝色”,第二次为“红色”,但是根据我对代码的排序方式,我会得到第一个if语句结果。
答案 0 :(得分:0)
if 'Red' or 'red' in sheet['A2'].value:
视为True
,因为将非空字符串视为True
。
所以实际上它与if True or 'red' in sheet['A2'].value:
默认情况下,除非对象被其对象定义,否则其对象的类定义了返回False的
__bool__()
方法或返回零的__len__()
方法。 1以下是被认为是错误的大多数内置对象:
- 定义为false的常量:“无”和“ False”。
- 任何数字类型的零:
0
,0.0
,0j
,Decimal(0)
,Fraction(0, 1)
- 空序列和集合:
''
,()
,[]
,{}
,set()
,range(0)
以下任何一项都可以解决您的问题:
if 'red' in sheet['A3'].value.lower():
或
if 'Red' in sheet['A3'].value or 'red' in sheet['A3'].value:
或
if any(color in sheet['A3'].value for color in ('Red', 'red')):
同样适用于所有if / elif条件。
另请注意,如果该字符串是较大字符串的一部分,它将仍然返回True,即
'Blue" in "I've Got The Blues"
将被评估True
编辑:由于评论中的讨论,我用考虑取代了评估。