這是我目前擁有的:
- d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. Bg5 Bg7 8. Bd3 OO 9. Nge2 a6 10. a4 Nbd7 11. OO 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 2 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
這是國際象棋移動的編號串列。我想要的是這樣的:
d4 Nf6 c4 c5 d5 e6 ...
相同的串列,但未編號。我是 Python 新手,想知道實作這一目標的最簡單和 Pythonic 的方法是什么。也許與.replace()功能有關?
uj5u.com熱心網友回復:
只需洗掉每三個元素
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'
uj5u.com熱心網友回復:
我們可以使用正則運算式來替換串列中的數字。
我把串列放在一個字串中。使用正則運算式子,我替換了數字。正則運算式能夠找到以點(。)結尾的數字。
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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/488826.html
