Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python操作excel电子表格_Python_Python 3.x_Automation_Excel 2010_String Search - Fatal编程技术网

用python操作excel电子表格

用python操作excel电子表格,python,python-3.x,automation,excel-2010,string-search,Python,Python 3.x,Automation,Excel 2010,String Search,我是Python新手,尤其是在Excel中使用Python时。我需要编写代码,在a列的每个单元格的较长字符串中搜索字符串“Mac”、“Asus”、“AlienWare”、“Sony”或“Gigabit”。根据它在a列单元格的整个条目中找到的字符串,它应该将这5个字符串中的一个写入C列单元格的相应行。否则,如果找不到这五个元素中的任何一个,它会将“Other”写入C列中的相应行。例如,如果A2列的单元格包含字符串“ProLiant Asus DL980 G7”,则正确的代码将写入“Asus”到C2

我是Python新手,尤其是在Excel中使用Python时。我需要编写代码,在a列的每个单元格的较长字符串中搜索字符串“Mac”、“Asus”、“AlienWare”、“Sony”或“Gigabit”。根据它在a列单元格的整个条目中找到的字符串,它应该将这5个字符串中的一个写入C列单元格的相应行。否则,如果找不到这五个元素中的任何一个,它会将“Other”写入C列中的相应行。例如,如果A2列的单元格包含字符串“ProLiant Asus DL980 G7”,则正确的代码将写入“Asus”到C2列的单元格。它应该对A列中的每个单元格执行此操作,将适当的字符串写入C列中的相应单元格。A列中的每个单元格都将包含五个字符串中的一个,即Mac、Asus、AlienWare、Sony或Gigabit。如果它不包含这些字符串中的一个,我希望第3列中的相应单元格具有字符串“Other”写入其中。到目前为止,这是我拥有的代码(一点也不多):


我在openpyxl上没有做过很多工作,但听起来你好像在尝试做一个简单的字符串搜索

您可以使用访问单个单元格

cell1.internal_value
然后,您的if/else语句将类似于

if "HP" in str(cell1.internal_value):
数据可以直接分配给单元格,这样您就可以

ws['C' + str(i)] = "HP"

您可以对单元格中的所有数据执行此操作。

您尚未尝试编写任何代码来解决此问题。您可能需要首先让openpyxl写入excel工作簿,并验证其是否正常工作,即使它是虚拟数据。此页面看起来很有帮助-

一旦这项工作正常,您所需要的就是一个简单的函数,它接受一个字符串作为参数

def get_column_c_value(string_from_column_a):
     if "Lenovo" in string_from_column_a:
          return "Lenovo"
     else if "HP" in string_from_column_a:
          return "HP"
     # strings you need to check for here in the same format as above
     else return "other"

尝试一下这些方法,如果您有任何问题,请告诉我您遇到了什么问题。

谢谢,我会尝试一下!您只是要求代码来实现这一点吗?还是您有具体的问题?我已经找到了一种不同的方法来实现这一点,而无需使用下面的有用想法(以满足我的具体需要),但我有一个特定的问题。我可以让我的代码写入excel电子表格,但前提是我指定了一个特定的行(因此只填充一个单元格)。如果我使用row=I(尝试遍历所有行),我会收到一个错误:“ValueError:行或列值必须至少为1”但很明显,我正试图填充整个第三列,并让代码在行数上进行调整。我可能犯了一个简单但无知的错误。好吧,伙计们,我发现了。谢谢你们的帮助。当然,我只需要将“I”改为“I+1”!如果你们遇到问题,我很乐意提供帮助,请在这里发表评论!
def get_column_c_value(string_from_column_a):
     if "Lenovo" in string_from_column_a:
          return "Lenovo"
     else if "HP" in string_from_column_a:
          return "HP"
     # strings you need to check for here in the same format as above
     else return "other"