Hello Jay, Jay Mutter III wrote: > but still haven't gotten he first one. > <snip> >> for line in s: >> jay = patno.findall(line) >> print jay >> >> which yields the following >> >> [('1', '337', '912')] >> [('1', '354', '756')] <snip> >> if i try to write to a file instead of print to the screen using >> p2.write(jay) >> i get the message >> >> Traceback (most recent call last): >> File "patentno.py", line 12, in ? >> p2.write(jay) >> TypeError: argument 1 must be string or read-only character buffer, >> not list
Have a look at the output of print jay in the loop: it's a list containing a single tuple. The traceback is telling you that write() expects to get a string, not a list - you'll have to convert your list to a string. There are more ways to do this, depending on your needs. You could for example simply use p2.write(str(jay)), which will put in the file exactly what you see on the screen. You could also pretty-format it like this: >>> prettyjay = "".join(jay[0]) >>> p2.write(prettyjay + "\n") This will yield strings like "1336012". On a side-note, you should pay attention to the way you name your variables. prompt1 is descriptive, but strongly suggests that you have a prompt2, prompt3, etc. lurking somewhere in the code - and indeed, you do have a prompt2. Imagine a large program with many prompts, it would have prompt458, prompt2893. What happens if you remove prompt45 - renumber all the other ones? Not only that, prompt1 is actually a filename, while the name suggests it's simply a string shown to the user. It would be better to name them e.g. InputFileName and OutputFileName and the files themselves InputFile and OutputFile instead of p1/p2. patno suggests it's shorthand notation for PatternNumber - while it's in fact a regex, not a number at all. Naming variables after yourself, movie stars, pets or other frivolities - flattering as it may be - will become problematic when a couple of months later you're wondering why the application crashes upon adding Fido to DarthVader, appending the result to ApplePie and writing that to PamelaAnderson. Yours, Andrei ===== Mail address in header catches spam. Real contact info: ''.join([''.join(s) for s in zip( "[EMAIL PROTECTED] pmfe!Pes ontuei ulcpss edtels,s hr' one oC.", "rjc5wndon.Sa-re laed o s npbi ot.Ira h it oteesn edt C")]) _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor