You can load a curve from a CSV file that has this structure:
# Markups fiducial file version = 4.11
# CoordinateSystem = 0
# columns = id,x,y,z,ow,ox,oy,oz,vis,sel,lock,label,desc,associatedNodeID
To load from Python, you can
curveNode = slicer.util.loadMarkupsCurve('some/folder/MarkupsCurve.fcsv') (this convenience function is available in Slicer Preview Release downloaded tomorrow or later).
I created a script for CPR earlier, but to make it more accessible, I’ve now added it as a module (“Curved Planar Reformat”) to SlicerSandbox extension. It is available for Slicer Preview Releases you download tomorrow or later (in Examples category).