2016-05-10 12 views
1

Ich benutze Roboter-Framework in folgenden Umgebung.Robotframework: Wie Teile von Regex zu Strings ersetzen

  • Python 2.7.6
  • Robot Framework 2.8.7
  • Ubuntu 14.04.3 LTS

Ich möchte entfernen "charactor von Strings, wenn matches "[0-9] *" -Muster unbekannten Parameter.
follwing Mein Code ist aber das kann nicht funktionieren.

*** Settings *** 
Library Collections 
Library json 
Library String 

*** Variables *** 
${TARGET_STRING} {"host": "['192.168.1.2', '192.168.1.3']", "part": "['ZZZ1', 'ZZZ2']", "name": "XXXX", "kara": null, "type": "123", "id": "YYYY", "flg": false,"type2": "4567","type3": "4"} 


*** Test Cases *** 
My Test Case 
    ${resp} My Keyword ${TARGET_STRING} 

*** Keywords *** 
My Keyword 
    [Arguments] ${string} 
    ${resp} Replace String Using Regexp ${string} "[0-9][0-9][0-9]" 123 
    ${resp} Replace String Using Regexp ${resp} "[0-9][0-9][0-9][0-9]" 4567 
    ${resp} Replace String Using Regexp ${resp} "[0-9]" 4 
    Log To Console ${resp} 

Ausgang

{"host": "['192.168.1.2', '192.168.1.3']", "part": "['ZZZ1', 'ZZZ2']", "name": "XXXX", "kara": null, "type": 123, "id": "YYYY", "flg": false,"type2": 4567,"type3": 4} 

(In diesem Fall mag ich
"Typen" ändern: "123" bis "Typ": 123,
"Typ2": "4567" bis "Typ2": 4567,
"type3": "4" to "type3": 4 und andere nicht ändern)

Wie kann ich es verallgemeinern?

Antwort

1

können Sie diese Regex verwenden:

"[^"]+"\s*:\s*)"([0-9]+)" 

Die Python für das könnte wie etwas aussehen:

p = re.compile(ur'("[^"]+"\s*:\s*)"([0-9]+)"', re.IGNORECASE | re.MULTILINE) 

Der Ersatz-String sein wird: $1$2. Dies wird effektiv die beiden Teile ohne die Anführungszeichen um die Zahl neu kombinieren.