使用多个if条件时如何克服ValueError?

本杰明

我正在尝试制作一个可以识别文件夹名称是否为项目的脚本。为此,我想使用多个if条件。但是,我很难解决例如检查文件夹名称的首字母以及它是否为数字所导致的ValueError问题。如果是字符串,我想跳过该文件夹并检查下一个文件夹。预先感谢大家的帮助。干杯,本恩

我尝试了While和ValueError :,但没有成功。

#正确命名项目“ YYMM_ProjectName” =“ 1908_Sample_Project”

projectnames = ['190511_Waldfee', 'Mountain_Shooting_Test', '1806_Coffe_Prime_Now', '180410_Fotos', '191110', '1901_Rollercoaster_Vision_Ride', 'Musicvideo_LA', '1_Project_Win', '19_Wrong_Project', '1903_di_2', '1907_DL_2', '3401_CAR_Wagon']

#检查条件

for projectname in projectnames:
    if int(str(projectname[0])) < 3 and int(projectname[1]) > 5 and ((int(projectname[2]) * 10) + int(projectname[3])) <= 12 and str(projectname[4]) == "_" and projectname[5].isupper():
        print('Real Project')
        print('%s is a real Project' % projectname)
        # print("Skipped Folders")

ValueError:int()以10为底的无效文字:“ E”

右眼

根据我对所有ifs的了解...实际上,使用正则表达式匹配可能会更好您正在解析每个字符,并期望每个单独的字符都在非常有限的字符范围内。

我尚未测试此模式字符串,因此它可能不正确,或者需要根据您的需要进行调整。

import re

projectnames = ['1911_Waldfee', "1908_Project_Test", "1912_WinterProject", "1702_Stockfootage", "1805_Branded_Content"]

p = ''.join(["^", # Start of string being matched
             "[0-2]", # First character a number 0 through 2 (less than 3)
             "[6-9]", # Second character a number 6 through 9 (single digit greater than 5)
             "(0(?=[0-9])|1(?=[0-2]))", # (lookahead) A 0 followed only by any number 0 through 9 **OR** A 1 followed only by any number 0 through 2
             "((?<=0)[1-9]|(?<=1)[0-2])", # (lookbehind) Match 1-9 if the preceding character was a 0, match 0-2 if the preceding was a 1
             "_", # Next char is a "_"
             "[A-Z]", #Next char (only) is an upper A through Z
              ".*$" # Match anything until end of string 
    ])

for projectname in projectnames:
    if re.match(p, projectname):
        #print('Real Project')
        print('%s is a real Project' % projectname)
        # print("Skipped Folders")

编辑:=======================

您可以使用以下步骤逐步测试模式...

projectname = "2612_UPPER"
p = "^[0-2].*$" # The first character is between 0 through 2, and anything else afterwards
if re.match(p, projectname): print(projectname) 
# If you get a print, the first character match is right.
# Now do the next
p = "^[0-2][6-9].*$" # The first character is between 0 through 2, the second between 6 and 9, and anything else afterwards
if re.match(p, projectname): print(projectname) 
# If you get a print, the first and second character match is right.
# continue with the third, fourth, etc. 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何克服不使用循环条件或使用python跳过元素的一个或多个元素?

使用多个表时如何使用CASE条件

使用 VLOOKUP+QUERY+IMPORTRANGE 时如何应用多个条件?

同时运行多个cron作业时如何克服服务器负载问题?

如何对 -find 使用多个条件

在使用python的嵌套for循环中使用“和”逻辑时,如何使用多个if else条件

如何使用Nvidia驱动程序克服带有多个GPU的紫屏死机?

如何在多个条件下使用局部变量时使用CASE语句

使用 ||$cont|| 时如何包含多个表 在我的 url 查询参数中使用 '&or' 条件?

如何在管理堆时克服OutOfMemoryError?

使用HashMap时如何给条件

克服ValueError空数组

使用ReSharper时如何克服在编辑器中键入的麻烦?

从 JSON 导入数据时如何使用纯 JavaScript 克服 304 未修改问题

在scilab中使用fsolve时,如何克服“ scilab参数函数返回的变量不正确”?

在C3图中要加载单个点的多个X轴值时,如何克服X轴样式问题?

如何使用python使用多个IF条件语句

使用 NEST 库查询 ElasticSearch 服务器时如何应用多个条件?

使用多个条件或结果时,哪个签名最有效?如何正确冒泡错误?

正确定位多个框架时如何使用条件符号(VS2017)

使用 Get-AdUser 时如何根据 Powershell 中的多个条件过滤用户

如何在mysql的日期列中使用多个where条件时获取记录

如何将 .OrderBy 用于多个条件,一个只有时使用?

如何使用多个或语句简化条件?

如何使用 JavaScript 过滤多个条件?

如何使用python的迭代设置多个条件

如何为熊猫使用多个if条件?

如何使用MogoTemplate应用多个条件

如何使用多个条件过滤jsonb?