Answers.Body: <p>One way is by using the <a href="https://github.com/niklasf/python-chess" rel="nofollow noreferrer">python chess library</a>.</p>
  <ul>
  <li>Install python</li>
  <li>Install python chess with <code>pip install chess</code></li>
  </ul>
  <h3>p.py</h3>
  <pre><code>import chess.pgn
  
  fn = 's.pgn'
  
  with open(fn, encoding='utf-8') as h:
      while True:
          game = chess.pgn.read_game(h)
          if game is None:
              break
  
          for node in game.mainline():
              comment = node.comment
              com = comment.split('\n')
              fen = com[1]
              val = com[0]
              print(f'{fen} {{ {val} }}')
  </code></pre>
  <h3>s.pgn</h3>
  <p>multiple game is supported.</p>
  <pre><code>[Event &quot;Magnus Carlsen Inv KO&quot;]
  [Site &quot;chess24.com INT&quot;]
  [Date &quot;2021.03.17&quot;]
  [Round &quot;1.22&quot;]
  [White &quot;Carlsen,M&quot;]
  [Black &quot;Aronian,L&quot;]
  [Result &quot;1/2-1/2&quot;]
  [WhiteElo &quot;2847&quot;]
  [BlackElo &quot;2781&quot;]
  [ECO &quot;C47&quot;]
  
  1. e4 { 1.20 } { rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1 } 1... e5 { -0.20 } { rnbqkbnr/pppp1ppp/8/4p3/4P3/8/PPPP1PPP/RNBQKBNR w KQkq e6 0 2 } 2. Nf3 { -0.20 } { rnbqkbnr/pppp1ppp/8/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2 } 2... Nc6 { -0.40 } { r1bqkbnr/pppp1ppp/2n5/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 2 3 } 3. Nc3 { -0.20 } { r1bqkbnr/pppp1ppp/2n5/4p3/4P3/2N2N2/PPPP1PPP/R1BQKB1R b KQkq - 3 3 } 3... Nf6 { 0.00 } { r1bqkb1r/pppp1ppp/2n2n2/4p3/4P3/2N2N2/PPPP1PPP/R1BQKB1R w KQkq - 4 4 } 4. d4 { 0.80 } { r1bqkb1r/pppp1ppp/2n2n2/4p3/3PP3/2N2N2/PPP2PPP/R1BQKB1R b KQkq d3 0 4 } 4... exd4 { -0.30 } { r1bqkb1r/pppp1ppp/2n2n2/8/3pP3/2N2N2/PPP2PPP/R1BQKB1R w KQkq - 0 5 } 5. Nxd4 { 1.30 } { r1bqkb1r/pppp1ppp/2n2n2/8/3NP3/2N5/PPP2PPP/R1BQKB1R b KQkq - 0 5 } 5... Bb4 { 0.30 } { r1bqk2r/pppp1ppp/2n2n2/8/1b1NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 1 6 } 6. Nxc6 { 4.20 } { r1bqk2r/pppp1ppp/2N2n2/8/1b2P3/2N5/PPP2PPP/R1BQKB1R b KQkq - 0 6 } 6... bxc6 { 0.40 } { r1bqk2r/p1pp1ppp/2p2n2/8/1b2P3/2N5/PPP2PPP/R1BQKB1R w KQkq - 0 7 } 7. Bd3 { 0.20 } { r1bqk2r/p1pp1ppp/2p2n2/8/1b2P3/2NB4/PPP2PPP/R1BQK2R b KQkq - 1 7 } 7... d5 { -0.60 } { r1bqk2r/p1p2ppp/2p2n2/3p4/1b2P3/2NB4/PPP2PPP/R1BQK2R w KQkq d6 0 8 } 8. exd5 { 0.80 } { r1bqk2r/p1p2ppp/2p2n2/3P4/1b6/2NB4/PPP2PPP/R1BQK2R b KQkq - 0 8 } 8... cxd5 { -0.30 } { r1bqk2r/p1p2ppp/5n2/3p4/1b6/2NB4/PPP2PPP/R1BQK2R w KQkq - 0 9 } 9. O-O { -0.10 } { r1bqk2r/p1p2ppp/5n2/3p4/1b6/2NB4/PPP2PPP/R1BQ1RK1 b kq - 1 9 } 9... O-O { 0.30 } { r1bq1rk1/p1p2ppp/5n2/3p4/1b6/2NB4/PPP2PPP/R1BQ1RK1 w - - 2 10 } 10. Bg5 { 0.90 } { r1bq1rk1/p1p2ppp/5n2/3p2B1/1b6/2NB4/PPP2PPP/R2Q1RK1 b - - 3 10 } 10... Be6 { 0.80 } { r2q1rk1/p1p2ppp/4bn2/3p2B1/1b6/2NB4/PPP2PPP/R2Q1RK1 w - - 4 11 } 11. Nb5 { 0.60 } { r2q1rk1/p1p2ppp/4bn2/1N1p2B1/1b6/3B4/PPP2PPP/R2Q1RK1 b - - 5 11 } 11... c5 { 0.70 } { r2q1rk1/p4ppp/4bn2/1Npp2B1/1b6/3B4/PPP2PPP/R2Q1RK1 w - c6 0 12 } 12. a3 { 0.70 } { r2q1rk1/p4ppp/4bn2/1Npp2B1/1b6/P2B4/1PP2PPP/R2Q1RK1 b - - 0 12 } 12... Ba5 { 0.80 } { r2q1rk1/p4ppp/4bn2/bNpp2B1/8/P2B4/1PP2PPP/R2Q1RK1 w - - 1 13 } 13. b4 { 1.10 } { r2q1rk1/p4ppp/4bn2/bNpp2B1/1P6/P2B4/2P2PPP/R2Q1RK1 b - b3 0 13 } 13... Bb6 { 1.00 } { r2q1rk1/p4ppp/1b2bn2/1Npp2B1/1P6/P2B4/2P2PPP/R2Q1RK1 w - - 1 14 } 14. bxc5 { 2.20 } { r2q1rk1/p4ppp/1b2bn2/1NPp2B1/8/P2B4/2P2PPP/R2Q1RK1 b - - 0 14 } 14... Bxc5 { 0.10 } { r2q1rk1/p4ppp/4bn2/1Nbp2B1/8/P2B4/2P2PPP/R2Q1RK1 w - - 0 15 } 15. c3 { 0.40 } { r2q1rk1/p4ppp/4bn2/1Nbp2B1/8/P1PB4/5PPP/R2Q1RK1 b - - 0 15 } 15... h6 { 0.30 } { r2q1rk1/p4pp1/4bn1p/1Nbp2B1/8/P1PB4/5PPP/R2Q1RK1 w - - 0 16 } 16. Bh4 { -0.20 } { r2q1rk1/p4pp1/4bn1p/1Nbp4/7B/P1PB4/5PPP/R2Q1RK1 b - - 1 16 } 16... Rc8 { -0.10 } { 2rq1rk1/p4pp1/4bn1p/1Nbp4/7B/P1PB4/5PPP/R2Q1RK1 w - - 2 17 } 17. Nd4 { 1.00 } { 2rq1rk1/p4pp1/4bn1p/2bp4/3N3B/P1PB4/5PPP/R2Q1RK1 b - - 3 17 } 17... Bxd4 { -3.20 } { 2rq1rk1/p4pp1/4bn1p/3p4/3b3B/P1PB4/5PPP/R2Q1RK1 w - - 0 18 } 18. cxd4 { 0.20 } { 2rq1rk1/p4pp1/4bn1p/3p4/3P3B/P2B4/5PPP/R2Q1RK1 b - - 0 18 } 18... g5 { -0.10 } { 2rq1rk1/p4p2/4bn1p/3p2p1/3P3B/P2B4/5PPP/R2Q1RK1 w - g6 0 19 } 19. Bg3 { 0.40 } { 2rq1rk1/p4p2/4bn1p/3p2p1/3P4/P2B2B1/5PPP/R2Q1RK1 b - - 1 19 } 19... Ne4 { -0.40 } { 2rq1rk1/p4p2/4b2p/3p2p1/3Pn3/P2B2B1/5PPP/R2Q1RK1 w - - 2 20 } 20. Qa4 { 0.10 } { 2rq1rk1/p4p2/4b2p/3p2p1/Q2Pn3/P2B2B1/5PPP/R4RK1 b - - 3 20 } 20... Nxg3 { -2.90 } { 2rq1rk1/p4p2/4b2p/3p2p1/Q2P4/P2B2n1/5PPP/R4RK1 w - - 0 21 } 21. hxg3 { 0.60 } { 2rq1rk1/p4p2/4b2p/3p2p1/Q2P4/P2B2P1/5PP1/R4RK1 b - - 0 21 } 21... Rc3 { 0.10 } { 3q1rk1/p4p2/4b2p/3p2p1/Q2P4/P1rB2P1/5PP1/R4RK1 w - - 1 22 } 22. Qd1 { -0.40 } { 3q1rk1/p4p2/4b2p/3p2p1/3P4/P1rB2P1/5PP1/R2Q1RK1 b - - 2 22 } 22... Qf6 { -0.60 } { 5rk1/p4p2/4bq1p/3p2p1/3P4/P1rB2P1/5PP1/R2Q1RK1 w - - 3 23 } 23. Qd2 { -0.10 } { 5rk1/p4p2/4bq1p/3p2p1/3P4/P1rB2P1/3Q1PP1/R4RK1 b - - 4 23 } 23... Rfc8 { -0.40 } { 2r3k1/p4p2/4bq1p/3p2p1/3P4/P1rB2P1/3Q1PP1/R4RK1 w - - 5 24 } 24. Rfe1 { 0.10 } { 2r3k1/p4p2/4bq1p/3p2p1/3P4/P1rB2P1/3Q1PP1/R3R1K1 b - - 6 24 } 24... Bf5 { -0.50 } { 2r3k1/p4p2/5q1p/3p1bp1/3P4/P1rB2P1/3Q1PP1/R3R1K1 w - - 7 25 } 25. Bxf5 { 3.30 } { 2r3k1/p4p2/5q1p/3p1Bp1/3P4/P1r3P1/3Q1PP1/R3R1K1 b - - 0 25 } 25... Qxf5 { -1.20 } { 2r3k1/p4p2/7p/3p1qp1/3P4/P1r3P1/3Q1PP1/R3R1K1 w - - 0 26 } 26. Re5 { -1.10 } { 2r3k1/p4p2/7p/3pRqp1/3P4/P1r3P1/3Q1PP1/R5K1 b - - 1 26 } 26... Qd3 { -0.90 } { 2r3k1/p4p2/7p/3pR1p1/3P4/P1rq2P1/3Q1PP1/R5K1 w - - 2 27 } 27. Qxd3 { 10.20 } { 2r3k1/p4p2/7p/3pR1p1/3P4/P1rQ2P1/5PP1/R5K1 b - - 0 27 } 27... Rxd3 { -0.80 } { 2r3k1/p4p2/7p/3pR1p1/3P4/P2r2P1/5PP1/R5K1 w - - 0 28 } 28. Rxd5 { 0.10 } { 2r3k1/p4p2/7p/3R2p1/3P4/P2r2P1/5PP1/R5K1 b - - 0 28 } 28... Rc2 { 0.10 } { 6k1/p4p2/7p/3R2p1/3P4/P2r2P1/2r2PP1/R5K1 w - - 1 29 } 29. Ra5 { 0.30 } { 6k1/p4p2/7p/R5p1/3P4/P2r2P1/2r2PP1/R5K1 b - - 2 29 } 29... Rxd4 { -1.30 } { 6k1/p4p2/7p/R5p1/3r4/P5P1/2r2PP1/R5K1 w - - 0 30 } 30. Rxa7 { -0.20 } { 6k1/R4p2/7p/6p1/3r4/P5P1/2r2PP1/R5K1 b - - 0 30 } 30... Rdd2 { 0.60 } { 6k1/R4p2/7p/6p1/8/P5P1/2rr1PP1/R5K1 w - - 1 31 } 31. Rf1 { 0.40 } { 6k1/R4p2/7p/6p1/8/P5P1/2rr1PP1/5RK1 b - - 2 31 } 31... Ra2 { 0.70 } { 6k1/R4p2/7p/6p1/8/P5P1/r2r1PP1/5RK1 w - - 3 32 } 32. a4 { 0.50 } { 6k1/R4p2/7p/6p1/P7/6P1/r2r1PP1/5RK1 b - - 0 32 } 32... Kg7 { 0.50 } { 8/R4pk1/7p/6p1/P7/6P1/r2r1PP1/5RK1 w - - 1 33 } 33. Ra5 { 0.30 } { 8/5pk1/7p/R5p1/P7/6P1/r2r1PP1/5RK1 b - - 2 33 } 33... Rd4 { -0.30 } { 8/5pk1/7p/R5p1/P2r4/6P1/r4PP1/5RK1 w - - 3 34 } 34. Re1 { 0.50 } { 8/5pk1/7p/R5p1/P2r4/6P1/r4PP1/4R1K1 b - - 4 34 } 34... Rdxa4 { 0.20 } { 8/5pk1/7p/R5p1/r7/6P1/r4PP1/4R1K1 w - - 0 35 } 35. Rxa4 { 6.30 } { 8/5pk1/7p/6p1/R7/6P1/r4PP1/4R1K1 b - - 0 35 } 35... Rxa4 { -0.60 } { 8/5pk1/7p/6p1/r7/6P1/5PP1/4R1K1 w - - 0 36 } 36. f3 { -0.60 } { 8/5pk1/7p/6p1/r7/5PP1/6P1/4R1K1 b - - 0 36 } 36... g4 { -0.40 } { 8/5pk1/7p/8/r5p1/5PP1/6P1/4R1K1 w - - 0 37 } 37. fxg4 { 0.50 } { 8/5pk1/7p/8/r5P1/6P1/6P1/4R1K1 b - - 0 37 } 37... Rxg4 { -0.30 } { 8/5pk1/7p/8/6r1/6P1/6P1/4R1K1 w - - 0 38 } 38. Kf2 { 0.00 } { 8/5pk1/7p/8/6r1/6P1/5KP1/4R3 b - - 1 38 } 38... Rg5 { 0.10 } { 8/5pk1/7p/6r1/8/6P1/5KP1/4R3 w - - 2 39 } 39. Re4 { 0.20 } { 8/5pk1/7p/6r1/4R3/6P1/5KP1/8 b - - 3 39 } 39... Kg6 { 0.40 } { 8/5p2/6kp/6r1/4R3/6P1/5KP1/8 w - - 4 40 } 40. g4 { 0.60 } { 8/5p2/6kp/6r1/4R1P1/8/5KP1/8 b - - 0 40 } 40... Ra5 { 0.00 } { 8/5p2/6kp/r7/4R1P1/8/5KP1/8 w - - 1 41 } 41. Kg3 { -0.20 } { 8/5p2/6kp/r7/4R1P1/6K1/6P1/8 b - - 2 41 } 1/2-1/2
  </code></pre>
  <p>The move text must be in a single line, use <code>-w 10000</code> option in pgn-extract.</p>
  <pre><code>pgn-extract --quiet --evaluation -C --fencomments -w 10000 1.pgn
  </code></pre>
  <h3>Output</h3>
  <p>out.txt</p>
  <pre><code>rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1 { 1.20 }
  rnbqkbnr/pppp1ppp/8/4p3/4P3/8/PPPP1PPP/RNBQKBNR w KQkq e6 0 2 { -0.20 }
  rnbqkbnr/pppp1ppp/8/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2 { -0.20 }
  r1bqkbnr/pppp1ppp/2n5/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 2 3 { -0.40 }
  r1bqkbnr/pppp1ppp/2n5/4p3/4P3/2N2N2/PPPP1PPP/R1BQKB1R b KQkq - 3 3 { -0.20 }
  r1bqkb1r/pppp1ppp/2n2n2/4p3/4P3/2N2N2/PPPP1PPP/R1BQKB1R w KQkq - 4 4 { 0.00 }
  r1bqkb1r/pppp1ppp/2n2n2/4p3/3PP3/2N2N2/PPP2PPP/R1BQKB1R b KQkq d3 0 4 { 0.80 }
  r1bqkb1r/pppp1ppp/2n2n2/8/3pP3/2N2N2/PPP2PPP/R1BQKB1R w KQkq - 0 5 { -0.30 }
  r1bqkb1r/pppp1ppp/2n2n2/8/3NP3/2N5/PPP2PPP/R1BQKB1R b KQkq - 0 5 { 1.30 }
  ...
  </code></pre>
  <h3>Command line</h3>
  <pre><code>python p.py &gt;out.txt
  </code></pre>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-01-09T12:50:45.963Z
Answers.LastActivityDate: 2022-01-09T12:50:45.963Z
Answers.UserDisplayName: ferdy
Body: <p>I'm using <code>pgn-extract</code> to convert a PGN database into FEN + evaluations. My goal is something like this:</p>
  <pre><code>1. e4 e6 2. d4 b6 3. a3 Bb7
  </code></pre>
  <p>Into this:</p>
  <pre><code>rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1 { 1.20 } 
  rnbqkbnr/pppp1ppp/4p3/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq - 0 2 { 0.00 }
  rnbqkbnr/pppp1ppp/4p3/8/3PP3/8/PPP2PPP/RNBQKBNR b KQkq d3 0 2 { 0.90 } 
  rnbqkbnr/p1pp1ppp/1p2p3/8/3PP3/8/PPP2PPP/RNBQKBNR w KQkq - 0 3 { 0.70 }
  </code></pre>
  <p>So far, I've only been able to use: <code>pgn-extract --quiet --evaluation -C --fencomments 1.pgn</code> to get something like this (with both fen and evaluation following the SAN):</p>
  <pre><code>1. e4 { 1.20 } { rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0
  1 } 1... e6 { 0.00 } { rnbqkbnr/pppp1ppp/4p3/8/4P3/8/PPPP1PPP/RNBQKBNR w
  KQkq - 0 2 } 2. d4 { 0.90 } {
  rnbqkbnr/pppp1ppp/4p3/8/3PP3/8/PPP2PPP/RNBQKBNR b KQkq d3 0 2 } 2... b6 {
  0.70 } { rnbqkbnr/p1pp1ppp/1p2p3/8/3PP3/8/PPP2PPP/RNBQKBNR w KQkq - 0 3 }
  3. a3 { 0.60 } { rnbqkbnr/p1pp1ppp/1p2p3/8/3PP3/P7/1PP2PPP/RNBQKBNR b KQkq
  - 0 3 }
  </code></pre>
  <p>Is there a way to go directly to what I want?</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-01-09T07:16:50.223Z
Comments.Text: The most recent version of pgn-extract (21-08) has -Wfen as well as -Wepd for those two output formats.  The problem is that both strip comments  from the output so the --evaluation option would have no effect.
Comments.UserDisplayName: kentdjb
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-01-09T07:50:59.640Z
Comments.Text: On reflection, as EPD does support trailing comments via c0, c1, etc. it would be possible to extend the functionality of pgn-extract to retain move-related comments in the output. I am the author of pgn-extract so feel free to contact me via email if you would like to discuss this as a new feature.
Comments.UserDisplayName: kentdjb
Tags: <engines><evaluation><pgn>
Title: Using pgn-extract to output FEN + evaluation
ThreadText: # Using pgn-extract to output FEN + evaluation
  
  (Asked by: username_0 on 2022-01-09)
  
  I'm using `pgn-extract` to convert a PGN database into FEN + evaluations. My goal is something like this:
  
  ```
  1. e4 e6 2. d4 b6 3. a3 Bb7
  
  ```
  
  Into this:
  
  ```
  rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1 { 1.20 } 
  rnbqkbnr/pppp1ppp/4p3/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq - 0 2 { 0.00 }
  rnbqkbnr/pppp1ppp/4p3/8/3PP3/8/PPP2PPP/RNBQKBNR b KQkq d3 0 2 { 0.90 } 
  rnbqkbnr/p1pp1ppp/1p2p3/8/3PP3/8/PPP2PPP/RNBQKBNR w KQkq - 0 3 { 0.70 }
  
  ```
  
  So far, I've only been able to use: `pgn-extract --quiet --evaluation -C --fencomments 1.pgn` to get something like this (with both fen and evaluation following the SAN):
  
  ```
  1. e4 { 1.20 } { rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0
  1 } 1... e6 { 0.00 } { rnbqkbnr/pppp1ppp/4p3/8/4P3/8/PPPP1PPP/RNBQKBNR w
  KQkq - 0 2 } 2. d4 { 0.90 } {
  rnbqkbnr/pppp1ppp/4p3/8/3PP3/8/PPP2PPP/RNBQKBNR b KQkq d3 0 2 } 2... b6 {
  0.70 } { rnbqkbnr/p1pp1ppp/1p2p3/8/3PP3/8/PPP2PPP/RNBQKBNR w KQkq - 0 3 }
  3. a3 { 0.60 } { rnbqkbnr/p1pp1ppp/1p2p3/8/3PP3/P7/1PP2PPP/RNBQKBNR b KQkq
  - 0 3 }
  
  ```
  
  Is there a way to go directly to what I want?
  
  **Tags:** engines, evaluation, pgn
  
  > **Comments:**
  > **username_1**: The most recent version of pgn-extract (21-08) has -Wfen as well as -Wepd for those two output formats.  The problem is that both strip comments  from the output so the --evaluation option would have no effect.  
  > **username_1**: On reflection, as EPD does support trailing comments via c0, c1, etc. it would be possible to extend the functionality of pgn-extract to retain move-related comments in the output. I am the author of pgn-extract so feel free to contact me via email if you would like to discuss this as a new feature.  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_2 on 2022-01-09. Score: 3 | Accepted answer
  
  One way is by using the [python chess library](https://github.com/niklasf/python-chess).
  
  * Install python
  * Install python chess with `pip install chess`
  
  ### p.py
  
  ```
  import chess.pgn
  
  fn = 's.pgn'
  
  with open(fn, encoding='utf-8') as h:
      while True:
          game = chess.pgn.read_game(h)
          if game is None:
              break
  
          for node in game.mainline():
              comment = node.comment
              com = comment.split('\n')
              fen = com[1]
              val = com[0]
              print(f'{fen} {{ {val} }}')
  
  ```
  
  ### s.pgn
  
  multiple game is supported.
  
  ```
  [Event "Magnus Carlsen Inv KO"]
  [Site "chess24.com INT"]
  [Date "2021.03.17"]
  [Round "1.22"]
  [White "Carlsen,M"]
  [Black "Aronian,L"]
  [Result "1/2-1/2"]
  [WhiteElo "2847"]
  [BlackElo "2781"]
  [ECO "C47"]
  
  1. e4 { 1.20 } { rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1 } 1... e5 { -0.20 } { rnbqkbnr/pppp1ppp/8/4p3/4P3/8/PPPP1PPP/RNBQKBNR w KQkq e6 0 2 } 2. Nf3 { -0.20 } { rnbqkbnr/pppp1ppp/8/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2 } 2... Nc6 { -0.40 } { r1bqkbnr/pppp1ppp/2n5/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 2 3 } 3. Nc3 { -0.20 } { r1bqkbnr/pppp1ppp/2n5/4p3/4P3/2N2N2/PPPP1PPP/R1BQKB1R b KQkq - 3 3 } 3... Nf6 { 0.00 } { r1bqkb1r/pppp1ppp/2n2n2/4p3/4P3/2N2N2/PPPP1PPP/R1BQKB1R w KQkq - 4 4 } 4. d4 { 0.80 } { r1bqkb1r/pppp1ppp/2n2n2/4p3/3PP3/2N2N2/PPP2PPP/R1BQKB1R b KQkq d3 0 4 } 4... exd4 { -0.30 } { r1bqkb1r/pppp1ppp/2n2n2/8/3pP3/2N2N2/PPP2PPP/R1BQKB1R w KQkq - 0 5 } 5. Nxd4 { 1.30 } { r1bqkb1r/pppp1ppp/2n2n2/8/3NP3/2N5/PPP2PPP/R1BQKB1R b KQkq - 0 5 } 5... Bb4 { 0.30 } { r1bqk2r/pppp1ppp/2n2n2/8/1b1NP3/2N5/PPP2PPP/R1BQKB1R w KQkq - 1 6 } 6. Nxc6 { 4.20 } { r1bqk2r/pppp1ppp/2N2n2/8/1b2P3/2N5/PPP2PPP/R1BQKB1R b KQkq - 0 6 } 6... bxc6 { 0.40 } { r1bqk2r/p1pp1ppp/2p2n2/8/1b2P3/2N5/PPP2PPP/R1BQKB1R w KQkq - 0 7 } 7. Bd3 { 0.20 } { r1bqk2r/p1pp1ppp/2p2n2/8/1b2P3/2NB4/PPP2PPP/R1BQK2R b KQkq - 1 7 } 7... d5 { -0.60 } { r1bqk2r/p1p2ppp/2p2n2/3p4/1b2P3/2NB4/PPP2PPP/R1BQK2R w KQkq d6 0 8 } 8. exd5 { 0.80 } { r1bqk2r/p1p2ppp/2p2n2/3P4/1b6/2NB4/PPP2PPP/R1BQK2R b KQkq - 0 8 } 8... cxd5 { -0.30 } { r1bqk2r/p1p2ppp/5n2/3p4/1b6/2NB4/PPP2PPP/R1BQK2R w KQkq - 0 9 } 9. O-O { -0.10 } { r1bqk2r/p1p2ppp/5n2/3p4/1b6/2NB4/PPP2PPP/R1BQ1RK1 b kq - 1 9 } 9... O-O { 0.30 } { r1bq1rk1/p1p2ppp/5n2/3p4/1b6/2NB4/PPP2PPP/R1BQ1RK1 w - - 2 10 } 10. Bg5 { 0.90 } { r1bq1rk1/p1p2ppp/5n2/3p2B1/1b6/2NB4/PPP2PPP/R2Q1RK1 b - - 3 10 } 10... Be6 { 0.80 } { r2q1rk1/p1p2ppp/4bn2/3p2B1/1b6/2NB4/PPP2PPP/R2Q1RK1 w - - 4 11 } 11. Nb5 { 0.60 } { r2q1rk1/p1p2ppp/4bn2/1N1p2B1/1b6/3B4/PPP2PPP/R2Q1RK1 b - - 5 11 } 11... c5 { 0.70 } { r2q1rk1/p4ppp/4bn2/1Npp2B1/1b6/3B4/PPP2PPP/R2Q1RK1 w - c6 0 12 } 12. a3 { 0.70 } { r2q1rk1/p4ppp/4bn2/1Npp2B1/1b6/P2B4/1PP2PPP/R2Q1RK1 b - - 0 12 } 12... Ba5 { 0.80 } { r2q1rk1/p4ppp/4bn2/bNpp2B1/8/P2B4/1PP2PPP/R2Q1RK1 w - - 1 13 } 13. b4 { 1.10 } { r2q1rk1/p4ppp/4bn2/bNpp2B1/1P6/P2B4/2P2PPP/R2Q1RK1 b - b3 0 13 } 13... Bb6 { 1.00 } { r2q1rk1/p4ppp/1b2bn2/1Npp2B1/1P6/P2B4/2P2PPP/R2Q1RK1 w - - 1 14 } 14. bxc5 { 2.20 } { r2q1rk1/p4ppp/1b2bn2/1NPp2B1/8/P2B4/2P2PPP/R2Q1RK1 b - - 0 14 } 14... Bxc5 { 0.10 } { r2q1rk1/p4ppp/4bn2/1Nbp2B1/8/P2B4/2P2PPP/R2Q1RK1 w - - 0 15 } 15. c3 { 0.40 } { r2q1rk1/p4ppp/4bn2/1Nbp2B1/8/P1PB4/5PPP/R2Q1RK1 b - - 0 15 } 15... h6 { 0.30 } { r2q1rk1/p4pp1/4bn1p/1Nbp2B1/8/P1PB4/5PPP/R2Q1RK1 w - - 0 16 } 16. Bh4 { -0.20 } { r2q1rk1/p4pp1/4bn1p/1Nbp4/7B/P1PB4/5PPP/R2Q1RK1 b - - 1 16 } 16... Rc8 { -0.10 } { 2rq1rk1/p4pp1/4bn1p/1Nbp4/7B/P1PB4/5PPP/R2Q1RK1 w - - 2 17 } 17. Nd4 { 1.00 } { 2rq1rk1/p4pp1/4bn1p/2bp4/3N3B/P1PB4/5PPP/R2Q1RK1 b - - 3 17 } 17... Bxd4 { -3.20 } { 2rq1rk1/p4pp1/4bn1p/3p4/3b3B/P1PB4/5PPP/R2Q1RK1 w - - 0 18 } 18. cxd4 { 0.20 } { 2rq1rk1/p4pp1/4bn1p/3p4/3P3B/P2B4/5PPP/R2Q1RK1 b - - 0 18 } 18... g5 { -0.10 } { 2rq1rk1/p4p2/4bn1p/3p2p1/3P3B/P2B4/5PPP/R2Q1RK1 w - g6 0 19 } 19. Bg3 { 0.40 } { 2rq1rk1/p4p2/4bn1p/3p2p1/3P4/P2B2B1/5PPP/R2Q1RK1 b - - 1 19 } 19... Ne4 { -0.40 } { 2rq1rk1/p4p2/4b2p/3p2p1/3Pn3/P2B2B1/5PPP/R2Q1RK1 w - - 2 20 } 20. Qa4 { 0.10 } { 2rq1rk1/p4p2/4b2p/3p2p1/Q2Pn3/P2B2B1/5PPP/R4RK1 b - - 3 20 } 20... Nxg3 { -2.90 } { 2rq1rk1/p4p2/4b2p/3p2p1/Q2P4/P2B2n1/5PPP/R4RK1 w - - 0 21 } 21. hxg3 { 0.60 } { 2rq1rk1/p4p2/4b2p/3p2p1/Q2P4/P2B2P1/5PP1/R4RK1 b - - 0 21 } 21... Rc3 { 0.10 } { 3q1rk1/p4p2/4b2p/3p2p1/Q2P4/P1rB2P1/5PP1/R4RK1 w - - 1 22 } 22. Qd1 { -0.40 } { 3q1rk1/p4p2/4b2p/3p2p1/3P4/P1rB2P1/5PP1/R2Q1RK1 b - - 2 22 } 22... Qf6 { -0.60 } { 5rk1/p4p2/4bq1p/3p2p1/3P4/P1rB2P1/5PP1/R2Q1RK1 w - - 3 23 } 23. Qd2 { -0.10 } { 5rk1/p4p2/4bq1p/3p2p1/3P4/P1rB2P1/3Q1PP1/R4RK1 b - - 4 23 } 23... Rfc8 { -0.40 } { 2r3k1/p4p2/4bq1p/3p2p1/3P4/P1rB2P1/3Q1PP1/R4RK1 w - - 5 24 } 24. Rfe1 { 0.10 } { 2r3k1/p4p2/4bq1p/3p2p1/3P4/P1rB2P1/3Q1PP1/R3R1K1 b - - 6 24 } 24... Bf5 { -0.50 } { 2r3k1/p4p2/5q1p/3p1bp1/3P4/P1rB2P1/3Q1PP1/R3R1K1 w - - 7 25 } 25. Bxf5 { 3.30 } { 2r3k1/p4p2/5q1p/3p1Bp1/3P4/P1r3P1/3Q1PP1/R3R1K1 b - - 0 25 } 25... Qxf5 { -1.20 } { 2r3k1/p4p2/7p/3p1qp1/3P4/P1r3P1/3Q1PP1/R3R1K1 w - - 0 26 } 26. Re5 { -1.10 } { 2r3k1/p4p2/7p/3pRqp1/3P4/P1r3P1/3Q1PP1/R5K1 b - - 1 26 } 26... Qd3 { -0.90 } { 2r3k1/p4p2/7p/3pR1p1/3P4/P1rq2P1/3Q1PP1/R5K1 w - - 2 27 } 27. Qxd3 { 10.20 } { 2r3k1/p4p2/7p/3pR1p1/3P4/P1rQ2P1/5PP1/R5K1 b - - 0 27 } 27... Rxd3 { -0.80 } { 2r3k1/p4p2/7p/3pR1p1/3P4/P2r2P1/5PP1/R5K1 w - - 0 28 } 28. Rxd5 { 0.10 } { 2r3k1/p4p2/7p/3R2p1/3P4/P2r2P1/5PP1/R5K1 b - - 0 28 } 28... Rc2 { 0.10 } { 6k1/p4p2/7p/3R2p1/3P4/P2r2P1/2r2PP1/R5K1 w - - 1 29 } 29. Ra5 { 0.30 } { 6k1/p4p2/7p/R5p1/3P4/P2r2P1/2r2PP1/R5K1 b - - 2 29 } 29... Rxd4 { -1.30 } { 6k1/p4p2/7p/R5p1/3r4/P5P1/2r2PP1/R5K1 w - - 0 30 } 30. Rxa7 { -0.20 } { 6k1/R4p2/7p/6p1/3r4/P5P1/2r2PP1/R5K1 b - - 0 30 } 30... Rdd2 { 0.60 } { 6k1/R4p2/7p/6p1/8/P5P1/2rr1PP1/R5K1 w - - 1 31 } 31. Rf1 { 0.40 } { 6k1/R4p2/7p/6p1/8/P5P1/2rr1PP1/5RK1 b - - 2 31 } 31... Ra2 { 0.70 } { 6k1/R4p2/7p/6p1/8/P5P1/r2r1PP1/5RK1 w - - 3 32 } 32. a4 { 0.50 } { 6k1/R4p2/7p/6p1/P7/6P1/r2r1PP1/5RK1 b - - 0 32 } 32... Kg7 { 0.50 } { 8/R4pk1/7p/6p1/P7/6P1/r2r1PP1/5RK1 w - - 1 33 } 33. Ra5 { 0.30 } { 8/5pk1/7p/R5p1/P7/6P1/r2r1PP1/5RK1 b - - 2 33 } 33... Rd4 { -0.30 } { 8/5pk1/7p/R5p1/P2r4/6P1/r4PP1/5RK1 w - - 3 34 } 34. Re1 { 0.50 } { 8/5pk1/7p/R5p1/P2r4/6P1/r4PP1/4R1K1 b - - 4 34 } 34... Rdxa4 { 0.20 } { 8/5pk1/7p/R5p1/r7/6P1/r4PP1/4R1K1 w - - 0 35 } 35. Rxa4 { 6.30 } { 8/5pk1/7p/6p1/R7/6P1/r4PP1/4R1K1 b - - 0 35 } 35... Rxa4 { -0.60 } { 8/5pk1/7p/6p1/r7/6P1/5PP1/4R1K1 w - - 0 36 } 36. f3 { -0.60 } { 8/5pk1/7p/6p1/r7/5PP1/6P1/4R1K1 b - - 0 36 } 36... g4 { -0.40 } { 8/5pk1/7p/8/r5p1/5PP1/6P1/4R1K1 w - - 0 37 } 37. fxg4 { 0.50 } { 8/5pk1/7p/8/r5P1/6P1/6P1/4R1K1 b - - 0 37 } 37... Rxg4 { -0.30 } { 8/5pk1/7p/8/6r1/6P1/6P1/4R1K1 w - - 0 38 } 38. Kf2 { 0.00 } { 8/5pk1/7p/8/6r1/6P1/5KP1/4R3 b - - 1 38 } 38... Rg5 { 0.10 } { 8/5pk1/7p/6r1/8/6P1/5KP1/4R3 w - - 2 39 } 39. Re4 { 0.20 } { 8/5pk1/7p/6r1/4R3/6P1/5KP1/8 b - - 3 39 } 39... Kg6 { 0.40 } { 8/5p2/6kp/6r1/4R3/6P1/5KP1/8 w - - 4 40 } 40. g4 { 0.60 } { 8/5p2/6kp/6r1/4R1P1/8/5KP1/8 b - - 0 40 } 40... Ra5 { 0.00 } { 8/5p2/6kp/r7/4R1P1/8/5KP1/8 w - - 1 41 } 41. Kg3 { -0.20 } { 8/5p2/6kp/r7/4R1P1/6K1/6P1/8 b - - 2 41 } 1/2-1/2
  
  ```
  
  The move text must be in a single line, use `-w 10000` option in pgn-extract.
  
  ```
  pgn-extract --quiet --evaluation -C --fencomments -w 10000 1.pgn
  
  ```
  
  ### Output
  
  out.txt
  
  ```
  rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1 { 1.20 }
  rnbqkbnr/pppp1ppp/8/4p3/4P3/8/PPPP1PPP/RNBQKBNR w KQkq e6 0 2 { -0.20 }
  rnbqkbnr/pppp1ppp/8/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2 { -0.20 }
  r1bqkbnr/pppp1ppp/2n5/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 2 3 { -0.40 }
  r1bqkbnr/pppp1ppp/2n5/4p3/4P3/2N2N2/PPPP1PPP/R1BQKB1R b KQkq - 3 3 { -0.20 }
  r1bqkb1r/pppp1ppp/2n2n2/4p3/4P3/2N2N2/PPPP1PPP/R1BQKB1R w KQkq - 4 4 { 0.00 }
  r1bqkb1r/pppp1ppp/2n2n2/4p3/3PP3/2N2N2/PPP2PPP/R1BQKB1R b KQkq d3 0 4 { 0.80 }
  r1bqkb1r/pppp1ppp/2n2n2/8/3pP3/2N2N2/PPP2PPP/R1BQKB1R w KQkq - 0 5 { -0.30 }
  r1bqkb1r/pppp1ppp/2n2n2/8/3NP3/2N5/PPP2PPP/R1BQKB1R b KQkq - 0 5 { 1.30 }
  ...
  
  ```
  
  ### Command line
  
  ```
  python p.py >out.txt
  
  ```
  
  
  ---
  
  