python:有选择地拆分和组合文件中的字母数字字符串

python: selectively split and combine alphanumeric strings in a file

我正在尝试复制文件中的某些行并从某些副本中删除某些子字符串。每行都是一个字符串,我通过 fileobject.readline()

Input:
Line1 : a -> b,c;
Line2 : d -> e,f,g;
Line3 : h -> i,j;
Line4 : k -> l;

Output:
Line1 : a -> b;
Line2 : a -> c;
Line3 : d -> e;
Line4 : d -> f;
Line5 : d -> g;
Line6 : h -> i;
Line7 : h -> j;
Line8 : k -> l;

在输出中,我想有选择地将输入行(单个字符串)复制到多行(多个字符串)。 replicas/duplicates 的数量: 对于一行中的 n 个“,”字符,我将这些行复制 (n +1) 次 其中,n 从 1 开始, 要放入 replicas/duplicates 的字符串: 副本 1:substring1 ->substring2[0] 副本 2:substring1 -> substring2[1]

等等。

谁能帮我解决上面的问题?

据我了解您的问题,您只需将“,”字符替换为“\w”模式即可。它更像是一个技巧而不是解决方案。

我写了一个简单的函数,可以 'replicate' 按照您的要求将一行变成多行。请注意,这仅适用于 1 行。

def replicateALine(line):
    regex = re.search('\w -> ', line)
    if regex:
        line= line.replace(',', ';\n' + regex.group(0))
    return line

print replicateALine('a -> b,c,d;')
print replicateALine('e -> b;')

输出:

a -> b;
a -> c;
a -> d;
e -> b;

更新:因为 \w 只会覆盖 1 个字符,如果您需要覆盖 snu_1opbb_1 之类的内容,请尝试 '\w+'

s = "a -> b,c;"
s = s.replace(";","")
a = s.split(" -> ")
b = a[1].split(',')
for i in range(len(b)):
    print('{} -> {};'.format(a[0],b[i]))

详细了解 Python 拆分和其他字符串方法 here。这只是第一个例子,你应该可以自己解决另一个。