python和fi中的字符串有选择地组合

2024-09-24 08:31:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图复制文件中的某些行,并从某些副本中剥离某些子字符串。每一行都是我穿过的一根线文件对象.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;

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

等等。在

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


Tags: 文件对象字符串gtinputoutputreadline副本
2条回答

据我所知,您可以简单地将“,”字符替换为“\w”模式。这更像是一个诡计而不是一个解决方案。在

我编写了一个简单的函数,可以根据您的需求将一行代码“复制”成多行代码。请注意,这仅适用于一条线路。在

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;')

输出:

^{pr2}$

更新:因为\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 split和其他字符串方法here。这只是第一个例子,你可以自己解决另一个。在

相关问题 更多 >