On Fri, Jan 7, 2011 at 6:47 AM, Tommy Kaas <tommy.k...@kaasogmulvad.dk>wrote:

> I try to write a program, where the user can write a word or a name and I
> will tell how many times the subject was mentioned in a text, I’m hosting.
>
> I guess it’s possible but not this way it seems?
>
> The re is only searching for the word “name” and not the variable name
>
> I’m using Python 2.6.6.
>
> TIA
>
> Tommy
>
>
>
> import re
>
> name = raw_input(’Who would you like to check’? ')
>
>
>
> mytxt = open("text.txt", "r")
>
> antal = []
>
> for line in mytxt:
>
>     if re.search("(.*)name(.*)", line):
>
>         antal.append(line)
>
> print name + ' was mentioned ' + str(len(antal)) + ' times in the text,
>

In Python, there is no such thing as variable interpolation, such as you'd
find in PHP or Perl. So when you type "(.*)name(.*)" (which I'm fairly sure
is the equivalent of r".*name.*", and also the equivalent search of "name"),
you literally have "name" in your string.

You have 3 options, string concatenation, and two styles of formatting:

>>> name = 'Sir Arthur'
>>> '.*' + name + '.*'
'.*Sir Arthur.*'
>>> '.*%s.*' % (name, )
'.*Sir Arthur.*'
>>> '.*{0}.*'.format(name)
'.*Sir Arthur.*'
>>> '.*{name}.*'.format(name=name)
'.*Sir Arthur.*'

The last two examples are different ways to accomplish the same thing.

HTH,
Wayne
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to