On 3/6/2016 11:38 PM, Fillmore wrote:

Hi, I'm trying to move away from Perl and go to Python.
Regex seems to bethe hardest challenge so far.

Perl:

while (<HEADERFILE>) {
     if (/(\d+)\t(.+)$/) {
     print $1." - ". $2."\n";
     }
}

into python

pattern = re.compile(r"(\d+)\t(.+)$")
with open(fields_Indexfile,mode="rt",encoding='utf-8') as headerfile:
     for line in headerfile:
         #sys.stdout.write(line)
         m = pattern.match(line)
         print(m.group(0))
     headerfile.close()

Delete this line. Files opened in a with statement are automatically closed when exiting the block. This is a main motivator and use for the with statement.

but I must be getting something fundamentally wrong because:

Traceback (most recent call last):
   File "./slicer.py", line 30, in <module>
     print(m.group(0))
AttributeError: 'NoneType' object has no attribute 'group'


  why is 'm' a None?

Python has a wonderful interactive help facility.  Learn to use it.

>>> import re
>>> help(re.match)
Help on function match in module re:

match(pattern, string, flags=0)
    Try to apply the pattern at the start of the string, returning
    a match object, or None if no match was found.
>>>

Add 'if m is not None:' before accessing m.group.

--
Terry Jan Reedy

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to