【问题标题】:Most Pythonic Way to Make String Unnumbered使字符串无编号的最 Pythonic 方式
【发布时间】:2022-07-02 17:56:28
【问题描述】:

这是我目前拥有的:

str = "1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. Bg5 Bg7 8. Bd3 O-O 9. Nge2 a6 10. a4 Nbd7 11. O-O Ne5 12. Bc2 Bg4 13. h3 Bxe2 14. Qxe2 Qc7 15. f4 Ned7 16. e5 dxe5 17. fxe5 Nh5 18. d6 Qb6 19. Nd5 Qxb2 20. Ne7+ Kh8 21. Rab1 Qxe5 22. Qxe5 Nxe5 23. Rxb7 Rad8 24. Rd1 f6 25. Be3 Nd7 26. Bd3 a5 27. Bd2 Ne5 28. Be4 Rxd6 29. Nd5 f5 30. Nc3 fxe4 31. Nxe4 Rdd8 32. Rc1 Nd3 33. Rc2 Bd4+ 34. Kh2 Nf2"

这是国际象棋移动的编号列表。我想要的是这样的:

str = "d4 Nf6 c4 c5 d5 e6 ..."

相同的列表,但未编号。我是 Python 新手,想知道实现这一目标的最简单和 Pythonic 的方法是什么。也许有 .replace() 函数的东西?

【问题讨论】:

  • 这不是 python 列表。我不知道你的实际列表是什么样的,所以如果不假设一堆东西就很难回答你的问题
  • 不澄清是我的错。这是一个字符串的内容
  • 那么你把它作为一个有效的python字符串发布了吗?

标签: python string


【解决方案1】:

只需删除每三个元素

text= "1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. Bg5 Bg7 8. Bd3 O-O 9. Nge2 a6 10. a4 Nbd7 11. O-O Ne5 12. Bc2 Bg4 13. h3 Bxe2 14. Qxe2 Qc7 15. f4 Ned7 16. e5 dxe5 17. fxe5 Nh5 18. d6 Qb6 19. Nd5 Qxb2 20. Ne7+ Kh8 21. Rab1 Qxe5 22. Qxe5 Nxe5 23. Rxb7 Rad8 24. Rd1 f6 25. Be3 Nd7 26. Bd3 a5 27. Bd2 Ne5 28. Be4 Rxd6 29. Nd5 f5 30. Nc3 fxe4 31. Nxe4 Rdd8 32. Rc1 Nd3 33. Rc2 Bd4+ 34. Kh2 Nf2"

text = text.split()    # split elements
del(text[::3])         # remove every third element
text = " ".join(text)  # join them back into a string


'd4 Nf6 c4 c5 d5 e6 Nc3 exd5 cxd5 d6 e4 g6 Bg5 Bg7 Bd3 O-O Nge2 a6 a4 Nbd7 O-O Ne5 Bc2 Bg4 h3 Bxe2 Qxe2 Qc7 f4 Ned7 e5 dxe5 fxe5 Nh5 d6 Qb6 Nd5 Qxb2 Ne7+ Kh8 Rab1 Qxe5 Qxe5 Nxe5 Rxb7 Rad8 Rd1 f6 Be3 Nd7 Bd3 a5 Bd2 Ne5 Be4 Rxd6 Nd5 f5 Nc3 fxe4 Nxe4 Rdd8 Rc1 Nd3 Rc2 Bd4+ Kh2 Nf2'

【讨论】:

    【解决方案2】:

    我们可以使用正则表达式来替换列表中的数字。

    我把列表放在一个字符串中。使用正则表达式子,我替换了数字。正则表达式能够找到以点(。)结尾的数字。

    import re
    
    myStr = '1.d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. Bg5 Bg7 8. Bd3 O-O 9. Nge2 a6 10. a4 Nbd7 11. O-O Ne5 12. Bc2 Bg4 13. h3 Bxe2 14. Qxe2 Qc7 15. f4 Ned7 16. e5 dxe5 17. fxe5 Nh5 18. d6 Qb6 19. Nd5 Qxb2 20. Ne7+ Kh8 21. Rab1 Qxe5 22. Qxe5 Nxe5 23. Rxb7 Rad8 24. Rd1 f6 25. Be3 Nd7 26. Bd3 a5 27. Bd2 Ne5 28. Be4 Rxd6 29. Nd5 f5 30. Nc3 fxe4 31. Nxe4 Rdd8 32. Rc1 Nd3 33. Rc2 Bd4+ 34. Kh2 Nf2'
    
    
    newStr = re.sub('\d+\.', ' ', myStr)
    
    print(newStr)
    

    【讨论】:

      猜你喜欢
      • 2021-06-09
      • 2016-05-29
      • 2022-11-18
      • 2013-09-02
      • 2016-06-18
      • 1970-01-01
      • 2014-01-23
      • 1970-01-01
      • 2016-04-17
      相关资源
      最近更新 更多