1

これが私が達成しようとしていることです:

void some_function(int,  int *, float);

void some_function(int a, int *b, float c);

これまでのところ、文字列をループするときに "," を chr(97+i) に置き換えようとしました。

text = len("void some_function(int,  int *, float);")
i = 0
for j in range(0, length)
    if text[j] == ",":
       rep = " " + chr(97+i) + " .,"
       text = text.replace("," rep)
       i = i + 1
       j = 0 # resetting the index, but this time I want to find the next occurrence of "," which I am not sure

しかし、これは仕事をしていません。これを行うより良い方法があれば教えてください。

4

3 に答える 3

1
import re

i = 96
def replace(matches):
    global i
    i += 1
    return " " + chr(i) + matches.group(0)

re.sub(',|\)', replace, "void some_function(int,  int *, float);")
于 2012-06-07T17:39:06.757 に答える
1
text = "void some_function(int,  int *, float);".replace(',', '%s,') % (' a', 'b')
于 2012-06-07T17:39:11.483 に答える
0

最後のパラメータの後に「,」ではなく「)」が続くため、元のアイデアは機能しません。

import re
import string

def fix(text):
    n = len(re.findall('[,(]', text))
    return re.sub('([,)])', ' %s\\1', text) % tuple(string.letters[:n])
于 2012-06-07T17:51:31.810 に答える