0

I want to output a list like:

operation1 = [
    'command\s+[0-9]+',
]

Where the pattern [0-9]+ is to be dynamically filled.

So I wrote:

reg = {
    'NUMBER' : '^[0-9]+$',
    }

operation1 = [
    'command\s+'+str(reg[NUMBER]),
]
print operation1

But i am getting an error:

Message File Name   Line    Position    
Traceback               
    <module>    <module1>   6       
NameError: name 'NUMBER' is not defined             

Help needed! Thanks in advance.

4 Answers 4

1

it should be reg['NUMBER'], I guess. 'NUMBER' is not a variable

Sign up to request clarification or add additional context in comments.

Comments

0

NUMBER should be a string:

reg['NUMBER']

Comments

0

You're using variable NUMBER, which is not defined. I think what you wanted to use is string 'NUMBER', like this:

>>> operation1 = ['command\s+[0-9]+',]
>>> reg = {'NUMBER' : '^[0-9]+$'}
>>> operation1 = [x + reg['NUMBER'] for x in operation1]
>>> operation1
['command\\s+[0-9]+^[0-9]+$']

Comments

0

You need to put the key in quotes (Perl allows not adding quotes, but not Python):

operation1 = [
    'command\s+'+str(reg['NUMBER']),
]

You also don't need the call to str:

operation1 = [
    'command\s+'+reg['NUMBER'],
]

You could even do this (although not related to the original question):

operation1 = [
    'command\s+{}'.format(reg['NUMBER']),
]

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.