excel - 如何从 Excel 单元格中复制一个值并将其粘贴到一个新的单元格中
问题描述
我正在尝试创建将在单元格中搜索诸如“蓝色”之类的颜色值的代码,如果在该单元格中找到它,则将该值粘贴到另一个单元格中,然后对几百种颜色的范围重复此操作。
一旦发生这种情况,对列中的下一个单元格再次执行相同的过程,并粘贴到相应行中的另一个单元格中,直到每个填充的单元格都被搜索到所有颜色值。
我有创建 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 语句结果。
解决方案
if 'Red' or 'red' in sheet['A2'].value:
总是被考虑True
,因为非空字符串被考虑True
。所以实际上它是一样的if True or 'red' in sheet['A2'].value:
从文档:
默认情况下,一个对象被认为是真,除非它的类定义了一个
__bool__()
返回 False 的__len__()
方法或一个返回零的方法,当与该对象一起调用时。1以下是大多数被认为是错误的内置对象:
- 定义为假的常量:无和假。
- 任何数字类型的零:
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
编辑:由于评论中的讨论,我将评估替换为考虑。
推荐阅读
- python - 如何在非索引列上找到多个熊猫数据框的交集
- c - C: printf 在 while 循环之前仍然没有刷新,即使格式字符串中有换行符
- c++ - 在 Visual C++ 2017 中:属性页中的哪个位置说明了哪些应用程序类型对应于项目?
- webpack - @font-face 不上传本地字体并且不显示错误(webpack)
- java - 每当我尝试获取表上的值并在`setString`上使用它时,我都会收到 indexOutOfBoundsException
- reactjs - 如何通过单击查看按钮显示保存的数据
- algorithm - TEA 算法中操作数的值在 Assembly 中无法正确解密
- javascript - 如何用n个切片画一个圆
- algorithm - 给定整数 n 的 n*(n+1),有效地找到 n
- python - SQLAlchemy ORM / Python:仅当搜索值不是None时才包含查询过滤器的单行器(内联'if')