我是Python的新手(从零到基本),但我喜欢编码的简单性。在以下问题中寻求帮助。提前表示感谢
我有两个电子表格
1.一个包含一列文件夹路径列表(分隔符-反斜杠)-检查电子表格
1.其他包含3列产品代码,wordslist,优先级-主电子表格
我试图写一个Python代码扫描所有检查电子表格一次在一个文件夹中对一个主电子表格。这是我写的扫描一个检查电子表格的要求排序。
1.从检查电子表格中读取每个单元格,可选择从右向左读取(RL)
1.从主电子表格中搜索每个单词到“wordslist”列(单元格中的逗号分隔值)
1.如果找到,保存代码和优先级,并继续搜索单词,直到Master结束
1.从搜索结果中,查找具有最高优先级的代码(与2相比,1具有最高优先级)
1.在“检查”电子表格中的单元格的相邻列中添加最高优先级代码
1.如果未找到,请继续搜索(根据所选选项从R到L,从L到R)“检查”电子表格中文件夹路径中的所有单词
1.如果文件夹路径中的任何单词在Master中找不到,则将“TBD”添加到“Check”电子表格中单元格的相邻列中
1.移动到下一个单元格并重复步骤1到7
主电子表格包含3列数据,如:
| 产品代码|文字列表|优先级|
| - -----|- -----|- -----|
| prdX001|文件夹1名称,苹果,橙色,子文件夹2名称|一个|
| prdX002|文件夹1名称,苹果,文件夹2名称,橙色|2|
| prdX003| subfolder 1 name,apple,orange,folder 2 name|三个|
| prdX004| apple,orange,文件夹1名称,子文件夹2名称|4|
检查电子表格是否包含以下数据:从右向左阅读
| 测试值|应用的代码|原因(了解未添加到检查电子表格中的原因)|
| - -----|- -----|- -----|
| \server\fileshare\folder 1 name\subfolder 1 name|三个|(prdx004不适用,优先级低)|
| \server\fileshare\folder 2 name\subfolder 2 name|一个||
我有2个不同的方案,希望结合不知道如何。缺乏经验有时令人沮丧。
1.从“检查”电子表格中选择一个单元格
# Loop will print all values of first column
for i in range(2, m_row + 1):
cell_obj = sheet_obj.cell(row = i, column = 1)
# print(cell_obj.value)
path = os.path.normpath(cell_obj.value)
split_path = path.split('\\')
for x in range(len(split_path)):
#Don't like this hard coding
if x > 3:
if len(split_path[x]) > 0:
print(split_path[x])
1.在主电子表格中搜索
# Read Excel file
df = pd.read_excel(path_universal,sheet_name=1, usecols=[1])
for value in df['wordslist']:
# do something with value
my_list = df['wordslist'].str.split(',')
print(tuple(my_list))
1条答案
按热度按时间cvxl0en21#
我认为以下内容会产生您正在寻找的内容。我已经添加到您的初始代码,所以它的一些是相同的。
一些变化:
1.使用整个
df
(从Master文件),并且使用整个 Dataframe 比循环遍历每行并使用列表更容易。1.我已经改变了目录分割的“硬编码”条件。
从左到右或从右到左以及创建主文件dataframe:
Check文件:
注意:您可能需要更改文件名!