python - 使用正则表达式随机化 "<"和 ">"符号之间定义的元素位置

标签 python regex list random shuffle

我正在尝试随机化“<”和“>”括号之间定义的元素位置,例如。 由此而来

<id:1 s= red> 
<id:2 s= blue> 
<id:3 s= green>

到此

<id:3 s= green> 
<id:1 s= red> 
<id:2 s= blue>   

我将它们放入列表中,但无法将随机列表与正则表达式结果进行匹配。这是我到目前为止所得到的:

import re
from random import shuffle

a = open('data.txt', 'r')
s= a.read()
x = re.findall(r'\<([^>]+)', s)
shuffle(x)
f = re.sub(r'\<([^>]+)', x[0], s)


print(f)

最佳答案

让你的尝试发挥作用:

x = re.findall(r'(<[^>]+)', s)
shuffle(x)
f = re.sub(r'(<[^>]+)', lambda _: x.pop(), s)

我喜欢如何做:

x = re.split(r'(<[^>]+)', s)
y = x[1::2]
shuffle(y)
x[1::2] = y
f = ''.join(x)

Try it online!

关于python - 使用正则表达式随机化 "<"和 ">"符号之间定义的元素位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73513298/

相关文章:

python - 在 Python 中生成和压缩两个列表的最干净有效的方法

list - Kotlin 有像 Python 一样的 "enumerate"函数吗?

python - 使用 bool 索引就地修改 numpy 数组部分

python - TensorFlow:有没有办法找到编码到 TFRecord 文件中的图像的文件名?

python - 找不到服务 "taskqueue"的 api 代理

regex - 如何仅在存在定义的前缀的情况下将 CapitalCaseWords 替换为空格大写?

python - 使用 csv.reader 的制表符分隔文件未在我期望的位置分隔

android - 正则表达式模式去除一些无效的 JSON 元素

javascript - 正则表达式 - 如何查找未包含在 html 标记中或它们之间的单词

c# - 在 Where LINQ 查询中使用 Contains()