code: def csv_to_list_of_fields(lines: List[str],
                            csvheader: str,
                            quotechar: str = '"') -> List[str]:
        # noqa
      data = []  # type: List[str]
      # an empty line marks the end of the block
      csvlines = get_lines_from_to(lines, csvheader, [None])[1:]
      # ... remove the CSV header
      reader = csv.reader(csvlines, quotechar=quotechar)
      for fields in reader:
          data.append(fields)
      return data
docs: Extracts data from a list of CSV lines (starting with a defined header
      line) embedded in a longer text block but ending with a blank line.
      
      Used for processing e.g. MonkeyCantab rescue text output.
  
      Args:
          lines: CSV lines
          csvheader: CSV header line
          quotechar: ``quotechar`` parameter passed to :func:`csv.reader`
  
      Returns:
          list (by row) of lists (by value); see example
  
      Test code:
  
      .. code-block:: python
  
          import logging
          from cardinal_pythonlib.rnc_text import *
          logging.basicConfig(level=logging.DEBUG)
          
          myheader = "field1,field2,field3"
          mycsvlines = [
              "irrelevant line",
              myheader,  # header: START
              "row1value1,row1value2,row1value3",
              "row2value1,row2value2,row2value3",
              "",  # terminating blank line: END
              "other irrelevant line",
          ]
          csv_to_list_of_fields(mycsvlines, myheader)
          # [['row1value1', 'row1value2', 'row1value3'], ['row2value1', 'row2value2', 'row2value3']]