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