Python 字符串转换

标签 python regex string

这是我通过解析文件中的数据创建的字符串:

723|NM|1|7201|QQ|1|72034|PP|1|72034N|AA|1|7203466|QW|1|72000|NM|1|7201111|NM|1

理想情况下我想要这样的输出:

723|NM|1
7201|QQ|1
72034|PP|1
72034N|AA|1
7203466|QW|1
72000|NM|1
7201111|NM|1

由于我没有成功解析数据并动态附加它(我是 python 的新手),我知道我可以通过转换这个字符串来获得相同的期望输出。

我研究、测试并卡住了。

基本上我需要用一个新行替换分隔符的每个第 3 个实例(或者,也许任何人都可以建议的更好的东西)。

非常感谢任何帮助!

谢谢

最佳答案

没有正则表达式:

像这样:

s = "723|NM|1|7201|QQ|1|72034|PP|1|72034N|AA|1|7203466|QW|1|72000|NM|1|7201111|NM|1"

items = s.split("|")
print("\n".join(["|".join(items[i:i+3]) for i in range(0,len(items),3)] ))

请注意,外部 join 中的 [] 是有目的的,以获得更好的性能 ( List comprehension without [ ] in Python )(即使我同意它很丑 :))

结果:

723|NM|1
7201|QQ|1
72034|PP|1
72034N|AA|1
7203466|QW|1
72000|NM|1
7201111|NM|1

顺便说一句,使用正则表达式也很简单:

re.sub("(.*?\|.*?\|.*?)\|","\\1\n",s)

但是如果项目的数量不能完全被 3 整除(这可以做到,但是以更复杂的方式)

关于Python 字符串转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47956457/

相关文章:

python - 如何对 pandas 数据框进行字数统计

python - Pandas 等价于 SQL CROSS JOIN(笛卡尔积)

python - 值错误: Unsupported or invalid CSS selector: "unit-4" python

MySQL 正则表达式 - 有问题

c# - 这个正则表达式怎么写?

regex - sed 删除括号后的尾随空格

python - 如何获取元素的随机 ID?

c - 如何从字符串中提取指定字符串

delphi - Delphi字符串是不可变的吗?

c++ - 使用从 mkstemp 生成的文件名