pexpect and unicode strings

Sean DiZazzo half.italian at gmail.com
Sat Sep 5 04:32:48 CEST 2009


On Sep 4, 7:11 pm, Mathew Oakes <mathew.oa... at memechine.org> wrote:
> Is there anything that can be done to make pexpect spawns send unicode lines?
>
> In this example they are just middot characters, but this process
> needs to be able to handle languages in other character sets.
>
> >>> spokentext = u'Nation . Search the FOX  Nation . czars  \xb7  Health care  \xb7  town halls  \xb7  tea parties  ...'
> >>> p = pexpect.spawn('festival')
> >>> p.expect('festival> ')
> 0
> >>> p.sendline( spokentext )
>
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "/usr/lib/python2.6/dist-packages/pexpect.py", line 961, in sendline
>     n = self.send(s)
>   File "/usr/lib/python2.6/dist-packages/pexpect.py", line 953, in send
>     c = os.write(self.child_fd, s)
> UnicodeEncodeError: 'ascii' codec can't encode character u'\xb7' in
> position 41: ordinal not in range(128)
>
>
>
> Help appreciated!
>
> cheeers
> Mat

Did you trying changing line 953 in the pexpect file to:

c = os.write(self.child_fd, s.encode("utf-8"))

and then run your code again?

Worth a shot.  I have no good way of trying it out here.

~Sean



More information about the Python-list mailing list