Skip to content

Latest commit

 

History

History
298 lines (240 loc) · 10.7 KB

File metadata and controls

298 lines (240 loc) · 10.7 KB
layout title
default
Welcome to football.db.rsssf

{{ page.title }}

What's News (in 2026)? {#news}

Note - there's no more plan / efforts to turn or "distill the conventions" from the Rec.Sport.Soccer Statistics Foundation (RSSF) match schedules & results into a structured text format with a context-free grammar (and lexer & parser). Sorry, there are just too many variants, quirks and styles.

The good news - in most cases, yes, you can convert the RSSSF match schedules & results using its own "ad-hoc" formats (mostly depending on the original author) into the Football.TXT format, that is, a structured text format with a context-free grammar (and lexer & parser).
Either convert the RSSSF text "by hand" or with your own little search & replace scripts or why not with the help of the latest and greatest large language models (LLMs)?

Tip: For samples of RSSSF pages (incl. the Premier League, FA Cup, Club World Cup, European Championship, and more) converted to the structured Football.TXT format (for easy parsing and exporting to JSON, CSV, SQL and friends), see the /rsssf folder in the /euro, /england (and others) repos.

What's the Rec.Sport.Soccer Statistics Foundation (RSSSF)? {#rsssf}

The RSSSF collects and offers football (soccer) league & cup match results & schedules from all over the world online in a (semi-)structured text format. Example (RSSSF before):

Round 1
[May 25]
Vasco da Gama   1-0 Portuguesa
 [Carlos Tenório 47']
Vitória         2-2 Internacional
 [Maxi Biancucchi 2', Gabriel Paulista 11'; Diego Forlán 29', Fred 63']
Corinthians     1-1 Botafogo
 [Paulinho 73'; Rafael Marques 24']
[May 26]
Grêmio          2-0 Náutico         [played in Caxias do Sul-RS]
 [Zé Roberto 15', Elano 70']
Ponte Preta     0-2 São Paulo
 [Lúcio 9', Jádson 44'p]
Criciúma        3-1 Bahia
 [Matheus Ferraz 45'+1', Lins 46', João Vítor 82'; Diones 72']
Santos          0-0 Flamengo        [played in Brasília-DF]
Fluminense      2-1 Atlético/PR     [played in Macaé-RJ]
 [Rafael Sóbis 15'p, Samuel 53'; Manoel 28']
Cruzeiro        5-0 Goiás
 [Diego Souza 5', Bruno Rodrigo 30', Nílton 40',79', Borges 42']
Coritiba        2-1 Atlético/MG
 [Deivid 53', Arthur 90'+1'; Diego Tardelli 51']

or using an alternate format style (RSSSF before):

Round 1
[May 25]
Vasco da Gama   1-0 Portuguesa
 (Carlos Tenório 47)
Vitória         2-2 Internacional
 (Maxi Biancucchi 2, Gabriel Paulista 11 - Diego Forlán 29, Fred 63)
Corinthians     1-1 Botafogo
 (Paulinho 73 - Rafael Marques 24)
[May 26]
Grêmio          2-0 Náutico         [played in Caxias do Sul-RS]
 (Zé Roberto 15, Elano 70)
Ponte Preta     0-2 São Paulo
 (Lúcio 9, Jádson 44 p)
Criciúma        3-1 Bahia
 (Matheus Ferraz 45+1, Lins 46, João Vítor 82 - Diones 72)
Santos          0-0 Flamengo        [played in Brasília-DF]
Fluminense      2-1 Atlético/PR     [played in Macaé-RJ]
 (Rafael Sóbis 15 p, Samuel 53 - Manoel 28)
Cruzeiro        5-0 Goiás
 (Diego Souza 5, Bruno Rodrigo 30, Nílton 40,79, Borges 42)
Coritiba        2-1 Atlético/MG
 (Deivid 53, Arthur 90+1 - Diego Tardelli 51)

or the max goal version style (RSSSF before):

Round 1
[May 25]
Vasco da Gama   1-0 Portuguesa
 [1-0 Carlos Tenório 47]
Vitória         2-2 Internacional
 [1-0 Maxi Biancucchi 2, 2-0 Gabriel Paulista 11, 2-1 Diego Forlán 29, 2-2 Fred 63]
Corinthians     1-1 Botafogo
 [1-0 Rafael Marques 24, 1-1 Paulinho 73]
[May 26]
Grêmio          2-0 Náutico         [played in Caxias do Sul-RS]
 [1-0 Zé Roberto 15, 2-0 Elano 70]
Ponte Preta     0-2 São Paulo
 [0-1 Lúcio 9, 0-2 Jádson 44 p]
...

Find out more about the Rec.Sport.Soccer Statistics Foundation (RSSSF) »

How to convert to the Football.TXT format {#convert}

Yes, you can! Let's convert the sample to the Football.TXT format:

▪ Round 1
May 25
  Vasco da Gama   1-0 Portuguesa
    (Carlos Tenório 47')
  Vitória         2-2 Internacional
    (Maxi Biancucchi 2', Gabriel Paulista 11'; Diego Forlán 29', Fred 63')
  Corinthians     1-1 Botafogo
    (Paulinho 73'; Rafael Marques 24')
May 26
  Grêmio          2-0 Náutico         [played in Brasília-DF]
    (Zé Roberto 15', Elano 70')
  Ponte Preta     0-2 São Paulo
    (Lúcio 9', Jádson 44'p)
  Criciúma        3-1 Bahia
    (Matheus Ferraz 45'+1', Lins 46', João Vítor 82'; Diones 72')
  Santos          0-0 Flamengo        [played in Brasília-DF]
  Fluminense      2-1 Atlético/PR     [played in Macaé-RJ]
    (Rafael Sóbis 15'p, Samuel 53'; Manoel 28')
  Cruzeiro        5-0 Goiás
    (Diego Souza 5', Bruno Rodrigo 30', Nílton 40',79', Borges 42')
  Coritiba        2-1 Atlético/MG
    (Deivid 53', Arthur 90'+1'; Diego Tardelli 51')

What's changed?

  • Start round lines with a round marker .
  • Do NOT enclose date headers / lines with square brackets [].
  • Enclose goal lines with parentheses, that is, () instead of square brackets [].

More Football.TXT format notes:

  • Yes, the minute marker ' is optional and
  • the separator for goals of team home/away is ; or -.

Let's try:

▪ Round 1
May 25
  Vasco da Gama   1-0 Portuguesa     (Carlos Tenório 47)
  Vitória         2-2 Internacional  (Maxi Biancucchi 2, Gabriel Paulista 11 - Diego Forlán 29, Fred 63)
  Corinthians     1-1 Botafogo       (Paulinho 73 - Rafael Marques 24)
May 26
  Grêmio          2-0 Náutico       [played in Brasília-DF]
                         (Zé Roberto 15, Elano 70)
  Ponte Preta     0-2 São Paulo      (Lúcio 9, Jádson 44p)
  Criciúma        3-1 Bahia          (Matheus Ferraz 45+1, Lins 46, João Vítor 82 - Diones 72)
  Santos          0-0 Flamengo      [played in Brasília-DF]
  Fluminense      2-1 Atlético/PR   [played in Macaé-RJ]
                         (Rafael Sóbis 15p, Samuel 53 - Manoel 28)
  Cruzeiro        5-0 Goiás          (Diego Souza 5, Bruno Rodrigo 30, Nílton 40,79, Borges 42)
  Coritiba        2-1 Atlético/MG    (Deivid 53, Arthur 90+1 - Diego Tardelli 51)

and, yes, let's convert the "max goal version style" to the Football.TXT format:

▪ Round 1
May 25
  Vasco da Gama   1-0 Portuguesa
    (1-0 Carlos Tenório 47)
  Vitória         2-2 Internacional
    (1-0 Maxi Biancucchi 2, 2-0 Gabriel Paulista 11, 2-1 Diego Forlán 29, 2-2 Fred 63)
  Corinthians     1-1 Botafogo
    (1-0 Rafael Marques 24, 1-1 Paulinho 73)
May 26
  Grêmio          2-0 Náutico         [played in Caxias do Sul-RS]
    (1-0 Zé Roberto 15, 2-0 Elano 70)
  Ponte Preta     0-2 São Paulo
    (0-1 Lúcio 9, 0-2 Jádson 44 p)
...

Background - What's structured text? {#structured}

Q: How does the "magic" work?

A: If the text follows the Football.TXT (structured text) format conventions than you can use the Football.TXT lexer & parser machinery to "automagically" break-up the text into its (semantic) parts, that is, tokens (that build-up the parse tree and more) resulting in:

[[:round, "Round 1"]],
[[:date, "May 25"]],
[[:team, "Vasco da Gama"], [:score, "1-0"], [:team, "Portuguesa"]],
  [[:player, "Carlos Tenório"], [:minute, "47'"]],
[[:team, "Vitória"], [:score, "2-2"], [:team, "Internacional"]],
  [[:player, "Maxi Biancucchi"],[:minute, "2'"],[:","],
   [:player, "Gabriel Paulista"],[:minute, "11'"],[:";"],
   [:player, "Diego Forlán"],[:minute, "29'"],[:","],
   [:player, "Fred"],[:minute, "63'"]],
[[:team, "Corinthians"], [:score, "1-1"], [:team, "Botafogo"]],
  [[:player, "Paulinho"], [:minute, "73'"], [:";"], 
   [:player, "Rafael Marques"], [:minute, "24'"]],
[[:date, "May 26"]],
[[:team, "Grêmio"], [:score, "2-0"], [:team, "Náutico"], [:note, "played in Caxias do Sul-RS"]],
  [[:player, "Zé Roberto"], [:minute, "15'"], [:","], 
   [:player, "Elano"], [:minute, "70'"]],
[[:team, "Ponte Preta"], [:score, "0-2"], [:team, "São Paulo"]],
  [[:player, "Lúcio"], [:minute, "9'"], [:","], 
   [:player, "Jádson"], [:minute, "44'"], [:pen, "p"]],
[[:team, "Criciúma"], [:score, "3-1"], [:team, "Bahia"]],
  [[:player, "Matheus Ferraz"],[:minute, "45'+1'"],[:","],
   [:player, "Lins"],[:minute, "46'"],[:","],
   [:player, "João Vítor"],[:minute, "82'"],[:";"],
   [:player, "Diones"],[:minute, "72'"]],
[[:team, "Santos"], [:score, "0-0"], [:team, "Flamengo"], [:note, "played in Brasília-DF"]],
[[:team, "Fluminense"], [:score, "2-1"], [:team, "Atlético/PR"], [:note, "played in Macaé-RJ"]],
  [[:player, "Rafael Sóbis"],[:minute, "15'"],[:pen, "p"],[:","],
   [:player, "Samuel"],[:minute, "53'"],[:";"],
   [:player, "Manoel"],[:minute, "28'"]],
[[:team, "Cruzeiro"], [:score, "5-0"], [:team, "Goiás"]],
  [[:player, "Diego Souza"],[:minute, "5'"],[:","],
   [:player, "Bruno Rodrigo"],[:minute, "30'"],[:","],
   [:player, "Nílton"],[:minute, "40'"],[:","],[:minute, "79'"],[:","],
   [:player, "Borges"],[:minute, "42'"]],
[[:team, "Coritiba"], [:score, "2-1"], [:team, "Atlético/MG"]],
  [[:player, "Deivid"],[:minute, "53'"],[:","],
   [:player, "Arthur"],[:minute, "90'+1'"],[:";"],
   [:player, "Diego Tardelli"],[:minute, "51'"]]] 

For more, see the Football.TXT format, level 1 & 2 specs »

{% include questions.md %}