5

現在、ArcMap 10 (updateMessages) のツール パラメーターの検証コードを作成していますが、ユーザーが文字列内で英数字以外の文字を使用できないようにする必要があります。これは、フィーチャクラスで新しく作成されたフィールドに名前を付けるために使用されるためです。

これまで「str.isalnum()」を使用してきましたが、もちろんアンダースコアは除外されます。英数字とアンダースコアのみを受け入れる効率的な方法はありますか?

if self.params[3].altered:
  #Check if field name already exists
  if str(self.params[3].value) in [f.name for f in arcpy.ListFields(str(self.params[0].value))]:
    self.params[3].setErrorMessage("A field with this name already exists in the data set.")
  #Check for invalid characters
  elif not str(self.params[3].value).isalnum():
    self.params[3].setErrorMessage("There are invalid characters in the field name.")   
  else:
    self.params[3].clearMessage()

return
4

4 に答える 4

7

正規表現を試してください:

import re
if re.match(r'^[A-Za-z0-9_]+$', text):
    # do stuff
于 2013-06-07T11:09:45.853 に答える
1
import re
if re.match(r'^\w+$', text):
于 2013-06-07T11:08:59.007 に答える