正则表达式类型错误:预期的字符串或类似字节的对象 Python

Posted

技术标签:

【中文标题】正则表达式类型错误:预期的字符串或类似字节的对象 Python【英文标题】:Regex TypeError: expected string or bytes-like object Python 【发布时间】:2020-10-20 06:25:09 【问题描述】:

我正在尝试遍历来自多个 csv 文件的 pandas 系列的列。 我正在迭代,因为我需要检查每一行以查看格式是否与我们想要的匹配。如果不是,我想为表单的每个失败格式创建一个元组(“

def process_csv_formatting(csv):
    odfscsv_df = pd.read_csv(csv, header=None,names=['ODFS_LOG_FILENAME', 'ODFS_FILE_CREATE_DATETIME', 'LOT', 'TESTER', 'WAFER_SCRIBE'])
    odfscsv_df['CSV_FILENAME'] = csv.name
    odfscdate_re = re.compile(r"\d10")
    #print(odfscsv_df)
    errortup = [x for x in odfscsv_df['ODFS_FILE_CREATE_DATETIME'] if not odfscdate_re.search(x)]
    #errortup = [x for x in odfscsv_df['ODFS_FILE_CREATE_DATETIME']]

    print(errortup)
    # for index, row in odfscsv_df.iterrows():
    #     print(type(row['ODFS_FILE_CREATE_DATETIME']))
    return odfscsv_df

这里调用了这个函数:

def odf_history_from_csv_to_dbtable(db_instance):
odfsdict = db_instance['odfs_tester_history']
#table_row = 
totalresult_list = []

dir_dict = make_dict_of_csvprocessing_dirs()
#print(dir_dict)
csvbase_path_list = dir_dict["csvbase_path_list"]
archivefiles_path_set = dir_dict["archivefiles_path_set"]
errorfiles_path_set = dir_dict["errorfiles_path_set"]
emptyfiles_path_set = dir_dict["emptyfiles_path_set"]

for csv in csvbase_path_list:  # is there a faster way to compare the list of files in archive and history?
    if csv not in archivefiles_path_set and csv not in errorfiles_path_set and csv not in emptyfiles_path_set:
        csvhistoryfilelist_to_dbtable(csv, db_instance)
        odfscsv_df = process_csv_formatting(csv)
        result = odfscsv_df.to_sql('odfs_tester_history', con=odfsdict['engine'], if_exists='append', index=False)
        totalresult_list.append(result)


    else:
        print(csv.name + " is in archive folder already")
#print (totalresult_list)
return totalresult_list

这会遍历我的第一个 csv 井。我确实在第一个 csv 的列中打印了数据类型,它是,当我为第二个 csv 执行此操作时,它显示为 。当我运行该函数时,它成功地处理了来自第一个 csv 的数据,但是对于第二个 csv 的“create_datetime”数据以某种方式是 int 类型时抛出了以下错误: 回溯(最近一次调用最后一次): 文件“C:/Users/sys_nsgprobeingestio/Documents/dozie/odfs/odfshistory3.py”,第 234 行,在 odf_history_from_csv_to_dbtable(db_instance) 文件“C:/Users/sys_nsgprobeingestio/Documents/dozie/odfs/odfshistory3.py”,第 214 行,在 odf_history_from_csv_to_dbtable odfscsv_df = process_csv_formatting(csv) 文件“C:/Users/sys_nsgprobeingestio/Documents/dozie/odfs/odfshistory3.py”,第 190 行,在 process_csv_formatting errortup = [x for x in odfscsv_df['ODFS_FILE_CREATE_DATETIME'] 如果不是 odfscdate_re.search(x)] 文件“C:/Users/sys_nsgprobeingestio/Documents/dozie/odfs/odfshistory3.py”,第 190 行,在 errortup = [x for x in odfscsv_df['ODFS_FILE_CREATE_DATETIME'] 如果不是 odfscdate_re.search(x)] TypeError: 预期的字符串或类似字节的对象

我认为正则表达式适用于整数和字符串?如何在不修改 csv 数据框的数据的情况下解决此问题?

【问题讨论】:

errortup = [x for x in odfscsv_df['ODFS_FILE_CREATE_DATETIME'] 如果不是 odfscdate_re.search(str(x))] 是的,我想,一旦我输入了它,哈哈。我现在的问题是,当且仅当 x 与正则表达式不匹配时,我如何制作元组列表。我累了:errortup = [(odfscsv_df['ODFS_LOG_FILENAME'],x,csv.name) for x in odfscsv_df['ODFS_FILE_CREATE_DATETIME'] 如果不是 odfscdate_re.search(str(x))],但它给了我文件中的所有内容. odfscsv_df['ODFS_LOG_FILENAME'] ==> 您选择整个列。你今天想做什么?你想要什么信息? 可以使用pandas条件选择。这会更容易。 @PramoteKuacharoen 从未听说过 pandas 条件选择。它有什么作用?它使用正则表达式吗?我通过在列表理解中使用 zip 命令弄清楚了我想要做什么。 【参考方案1】:

编辑的代码购买现在有另一个问题:

odfscsv_df = pd.read_csv(csv, header=None,names=['ODFS_LOG_FILENAME', 'ODFS_FILE_CREATE_DATETIME', 'LOT', 'TESTER', 'WAFER_SCRIBE'])
odfscsv_df['CSV_FILENAME'] = csv.name
odfscdate_re = re.compile(r"\d10")
#print(odfscsv_df)

errortup = [(odfsname, "Bad_ODFS_FILE_CREATE_DATETIME= " + cdatetime, csv.name) for odfsname,cdatetime in zip(odfscsv_df['ODFS_LOG_FILENAME'], odfscsv_df['ODFS_FILE_CREATE_DATETIME']) if not odfscdate_re.search(str(cdatetime))]

但是现在我遇到了一个问题,我需要标记坏的 csv 文件并将其移动到特定目录中。如何使用列表理解来做到这一点?

【讨论】:

以上是关于正则表达式类型错误:预期的字符串或类似字节的对象 Python的主要内容,如果未能解决你的问题,请参考以下文章

通过 Python 电子邮件库发送电子邮件会引发错误“预期的字符串或类似字节的对象”

Django DateField TypeError 预期的字符串或类似字节的对象

TypeError: Django中日期范围的预期字符串或类似字节的对象错误。

TypeError:预期的字符串或类似字节的对象 HashingVectorizer

在抓取网站时,'TypeError:预期的字符串或类似字节的对象'

TypeError:列表中列表的预期字符串或类似字节的对象