Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中如何在括号内追加字符?_Python_Regex - Fatal编程技术网

在Python中如何在括号内追加字符?

在Python中如何在括号内追加字符?,python,regex,Python,Regex,我有以下意见: [ [ 'A(x)|B(x,y)|C(z)'],['A(x,y)|B(John,y)|C(z)' ] ] 我想要以下输出 [ [ A(x1)|B(x1,y1)|C(z1)'],['A(x2,y2)|B(John,y2)|C(z2)' ] ] 如果我有一个列表列表作为输入,我如何才能以这种方式将一个计数器依次初始化为一个计数器?Python代码 我个人会用regex来做这个re.sub用一个字符串替换另一个字符串(包含正则表达式标记,如\g) 我使用了\g而不是\1,因为Py

我有以下意见:

[ [ 'A(x)|B(x,y)|C(z)'],['A(x,y)|B(John,y)|C(z)' ] ]
我想要以下输出

[ [ A(x1)|B(x1,y1)|C(z1)'],['A(x2,y2)|B(John,y2)|C(z2)' ] ] 
如果我有一个列表列表作为输入,我如何才能以这种方式将一个计数器依次初始化为一个计数器?

Python代码 我个人会用regex来做这个
re.sub
用一个字符串替换另一个字符串(包含正则表达式标记,如
\g

我使用了
\g
而不是
\1
,因为Python不会按照我们的需要解释
\12
。它会将其视为正则表达式组12,而不是正则表达式组1,然后是数字2


是理解正则表达式的一个很好的工具。单击链接查看其工作原理。

因为它是一个列表列表,所以必须使用列表理解,regex

>>重新导入
>>>x=['A(x)| B(x,y)| C(z)','A(x,y)| B(约翰,y)| C(z)']
>>>[[re.sub(r'([xyz]),r'\g{}.格式(i+1),k)表示j中的k]表示i,j表示枚举(x)]
[A(x1)| B(x1,y1)| C(z1)”,[A(x2,y2)| B(John,y2)| C(z2)]
------
>>>x=['A(x)| B(x,y)| C(z)'B(x,y)','A(x,y)| B(约翰,y)| C(z)','A(x,y)| B(约翰,y)| C(z)]]
>>>[[re.sub(r'([xyz]),r'\g{}.格式(i,k)表示j中的k]表示枚举(x,1)中的i,j]
[A(x1)| B(x1,y1)| C(z1)'B(x1,y1)','A(x2,y2)| B(John,y2)| C(z2)','A | B',[A(x4,y4)| B(John,y4)| C(z4)]

迭代主列表,然后迭代子列表,然后匹配并替换子列表中存在的每个字符串(在x或y或z旁边追加索引号)。

如果输入数组中有3个元素,而第二个元素不包含x,那么第三个元素中的x是否为
x2
,或者
x3
?@RafaelBarros第三个元素中的x将是x3。对于每个列表,计数器都会递增
re.sub("(?<!\w)([xyz])",r"\g<1>2",before)
import re

before = "[ [ 'A(x)|B(x,y)|C(z)'],['A(x,y)|B(John,y)|C(z)' ] ]"
print(re.sub("(?<!\w)([xyz])",r"\g<1>2",before))
(?<!\w)([xyz])
\g<1>2
>>> import re
>>> x = [ [ 'A(x)|B(x,y)|C(z)'],['A(x,y)|B(John,y)|C(z)' ] ]
>>> [[re.sub(r'([xyz])', r'\g<1>{}'.format(i+1), k) for k in j] for i,j in enumerate(x)]
[['A(x1)|B(x1,y1)|C(z1)'], ['A(x2,y2)|B(John,y2)|C(z2)']]
------
>>> x = [ [ 'A(x)|B(x,y)|C(z)', 'B(x,y)'],['A(x,y)|B(John,y)|C(z)' ], ['A|B'], ['A(x,y)|B(John,y)|C(z)'] ]
>>> [[re.sub(r'([xyz])', r'\g<1>{}'.format(i), k) for k in j] for i,j in enumerate(x, 1)]
[['A(x1)|B(x1,y1)|C(z1)', 'B(x1,y1)'], ['A(x2,y2)|B(John,y2)|C(z2)'], ['A|B'], ['A(x4,y4)|B(John,y4)|C(z4)']]