I'm working on a script that get some information from a PGN file, a format used to describe chess games. I'm trying to copy the moves of each game separately in another file.
But sometimes, there are comments, marked by '{' and '}' characters, and I would like to strip them from the string (I'm copying each line of the file into a string to make some adjustments before writing on the output file).
An example of a string in this format would be:
'1.e4 {some comment} c5 2.Nf3 d6 3.d4 {another comment} Nxd4 {you got it}'
My first solution was simply:
my_string = my_string.replace(my_string[my_string.find('{'):my_string.find('}')], '')
Unfortunately, this stripped just the first set of comments, like this:
'1.e4 } c5 2.Nf3 d6 3.d4 {another comment} Nxd4 {you got it}'
(the '}' that remained is not a problem, it can be deleted with:
my_string = my_string.replace('}', '')
So I tried to loop over the string:
for char in my_string:
if char == '{':
my_string = my_string.replace(my_string[my_string.find('{'):my_string.find('}')], '')
The very same thing happened, only the first set of comments was deleted.
Then I tried a while loop:
while my_string.find('{') != -1:
my_string = my_string.replace(my_string[my_string.find('{'):my_string.find('}')], '')
And now I am stuck in an infinite loop...
Anyone knows how to solve this? I would accept a solution with lists too, which I could embed inside:
temp_list = list(my_string)
#solution with list manupulation
my_string = ''.join(temp_list)
re.sub?re.sub(r'\{[^}]*}', '', my_string)