You're right, thanks! This showed I was actually doing the correct thing
when checking whether a string element was a space. Now I see that actually
Frescobaldi starts calculating the lines from the 2nd one (that is, after
the line with the initial -*- expression). And so the error was when I was
assigning

mysequence[x] = '['

because, as I have just learned, strings in Python are immutable. Gosh. This
does not explain everything what was going on, most probably due to my
incompetence. But now I have something that's working:

x = 0
y = 0
mysequence = text
while x < len(text):
  if text[x] == ' ' and y = 0:
    mysequence = mysequence + '[ '
    y = y + 1
  else:
    mysequence = mysequence + text[x]
  x = x + 1
text = mysequence + ']'

So when I select "d16 e8 f8" it returns "d16[ e8 f8]" as I intended. Now I
will make it nicer :-)

Thanks you very much, Jacques!

On 10 December 2015 at 12:09, Jacques Menu <imj-muz...@bluewin.ch> wrote:

> Hello Leszek,
>
> How about:
>
>
> >>> var = "fo a"
> >>> var[2]
> ' '
> >>> var[2] == ' '
> True
>
>
> JM
>
> Le 10 déc. 2015 à 11:33, Leszek Wroński <elw...@gmail.com> a écrit :
>
> Guys,
>
> Frescobaldi has the useful 'slur for the selected notes' snippet under
> C-(. I want to have the same functionality for beams. That is, I want to be
> able to select some notes, and then via the snippet insert a '[' in the
> first space (that is, after the first note), and then a ']' at the end.
>
> Unfortunately, I have never in my life written a line of python... till
> this day, that is. So, I'm trying the following ('W' is for whitespace):
>
> 1 -*- name: mybeam; python; selection: strip;
> 2 x = 0
> 3 mysequence = text
> 4 while x < len(text):
> 5 WW if text[x] == ' ':
> 6 WWWW mysequence[x] = '['
> 7 WWWW break
> 8 WW x = x + 1
> 9 text = mysequence + ']'
>
> Notice that line 5 contains a space between the quotes. Of course I need
> to add conditions regarding what to do if there's no space in the selection
> etc. But that's for later, once this basic script actually works. As you
> can see, I thought I'd copy the selection to 'mysequence' string to
> manipulate on it; this is probably unneeded. But after writing the above I
> got, at line 5, an error "TypeError: 'unicode' object does not support item
> assignment".
>
> What I found weird is that to my untrained eyes line 5 does no assigning,
> but rather checks whether the xth element of the string text is a space.
> Anyway, after some googling I decided to substitute "is" for "==" in line
> 5. Right now the script does not give any errors, but it only adds a ']' at
> the end of the selection. I'm apparently unable to check whether the xth
> element of the string text is a space. I tried
>
> if text[x] == ' %d':
>
> and
>
> if text[x] ==  u"\u0020":
>
> and
>
> if text[x].isspace():
>
> to no avail (the last one gave the "unicode object does not support item
> assignment" error again, which I don't understand at all, having copied the
> command from
> http://www.ehow.com/how_12112665_determine-character-whitespace-python.html).
> Could anyone give me a hint on this?
>
> Best regards,
>
> Leszek.
>
> _______________________________________________
> lilypond-user mailing list
> lilypond-user@gnu.org
> https://lists.gnu.org/mailman/listinfo/lilypond-user
>
>
>
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to