📄 strutils.py
字号:
#----------------------------------------------------------------------------# Name: strutils.py# Purpose: String Utilities## Author: Morgan Hua## Created: 11/3/05# CVS-ID: $Id: strutils.py,v 1.4 2006/04/20 06:25:51 RD Exp $# Copyright: (c) 2005 ActiveGrid, Inc.# License: wxWindows License#----------------------------------------------------------------------------def caseInsensitiveCompare(s1, s2): """ Method used by sort() to sort values in case insensitive order """ s1L = s1.lower() s2L = s2.lower() if s1L == s2L: return 0 elif s1L < s2L: return -1 else: return 1def multiSplit(stringList, tokenList=[" "]): """Splits strings in stringList by tokens, returns list of string.""" if not stringList: return [] if isinstance(tokenList, basestring): tokenList = [tokenList] if isinstance(stringList, basestring): stringList = [stringList] rtnList = stringList for token in tokenList: rtnList = rtnList[:] for string in rtnList: if string.find(token) > -1: rtnList.remove(string) names = string.split(token) for name in names: name = name.strip() if name: rtnList.append(name) return rtnListQUOTES = ("\"", "'")def _findArgStart(argStr): i = -1 for c in argStr: i += 1 if (c == " "): continue elif (c == ","): continue return i return Nonedef _findArgEnd(argStr): quotedArg = True argEndChar = argStr[0] if (not argEndChar in QUOTES): argEndChar = "," quotedArg = False i = -1 firstChar = True for c in argStr: i+= 1 if (firstChar): firstChar = False if (quotedArg): continue if (c == argEndChar): if (quotedArg): return min(i+1, len(argStr)) else: return i return idef parseArgs(argStr, stripQuotes=False): """ Given a str representation of method arguments, returns list arguments (as strings). Input: "('[a,b]', 'c', 1)" -> Output: ["'[a,b]'", "'c'", "1"]. If stripQuotes, removes quotes from quoted arg. """ if (argStr.startswith("(")): argStr = argStr[1:] if (argStr.endswith(")")): argStr = argStr[:-1] else: raise AssertionError("Expected argStr to end with ')'") rtn = [] argsStr = argStr.strip() while (True): startIndex = _findArgStart(argStr) if (startIndex == None): break argStr = argStr[startIndex:] endIndex = _findArgEnd(argStr) if (endIndex == len(argStr) - 1): rtn.append(argStr.strip()) break t = argStr[:endIndex].strip() if (stripQuotes and t[0] in QUOTES and t[-1] in QUOTES): t = t[1:-1] rtn.append(t) argStr = argStr[endIndex:] return rtn
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -