非常新的Python,在这个网站上找到了很多很棒的Q和As。谢谢你们。这是我的困境:
我有一个位置树,以递归方式搜索和移动某些类型的数据(如果它们存在),并找到了很多用于此的方法。我的问题是命名约定。有一个标准格式的名称,其中前缀是3或4个字符(每个的一些),名称是几个,后缀是四个字符。有些名称使用'_'作为分隔符(PLAN_someFile_to_work_ZZTT,或FOR_someOtherFile_XXYY。(PLAN,FOR - 是前缀.... ZZTT,XXYY - 是后缀)
这是一个问题:如何将这三个元素干净地拆分为“Pythonicly”到前缀,fName和后缀? fName长度各不相同,如果有,则需要'_'。我已经能够操作并删除'_',但是当尝试获取fName(有或没有“_”)时,前缀长度为3 或 4个字符会被绊倒“。)我被绊了,无法选择正确数量的字符。
哦,我可以提取Prefix罚款,并检查它是否存在于合法值的元组中。有没有办法轻松地从该元组中选择前缀?我可以使用它,或者尝试从文件中解析它,作为一个选项。
代码是测试代码。打印报表仅供开发使用,不会出现在最终代码中。一些测试是为了理解Py如何处理这些东西。谢谢。
for dirName, subdirList, fileList in os.walk(rootDir):
print('Found directory: %s' % dirName)
if dirName.lower().endswith('.xxx'):
print('\n %s is a Database. ' % dirName)
BADrop = ntpath.basename(dirName)
print ('%s is variable BADrop. ' %BADrop)
dropName = remove(BADrop, '_')
print ('%s is variable dropName. ' %dropName)
NST = BADrop.split('_') [0]
NSP = BADrop.split('_') [-1]
NSP = os.path.splitext(NSPrj) [0]
NSt = os.path.splitext(BADrop) [1]
abc = dropName[4:-8]
if NST in pubTheme2: #pubTheme2 is a tuple list of legit values for the Prefix
print ('%s is variable NST. ' %NST)
print ('%s is variable NSP. ' %NSP)
print ('%s is variable NSt. ' %NSt)
print ('%s is variable abc. ' %abc)
答案 0 :(得分:0)
x = "PLAN_someFile_to_work_ZZTT"
y = "FOR_someOtherFile_XXYY"
def split(x):
z = x.split("_")
z[1] = "_".join(z[1:-1])
del(z[2:-1])
return z
print split(x)
print split(y)
这样的事情对你有用吗?
PS,如果你不希望下划线留在"中间"部分,只需将"_".join(z[1:-1])
更改为"".join(z[1:-1])
即可。无论如何都会工作。