Currently I am trying to import a CSV file using the python extension in QGIS and I have run into a problem that I can not seem to solve.

I am trying to do a basic import of a CSV file from a python code I created (See below) and every time the file loads the values in my attribute table become re-arranged (see image).

When I load the file from the "Create a Layer from a Delimited Text File" option it loads without a problem.

Here is a sample of my code:

uri = "file:///D:/MLB Stadiums/Test_R2/Player_Files/Espinosa_2014.csv?
       delimiter=%ss&xField=%s&yField=%s" % (",", "field_3", "field_4")
   vlayer = QgsVectorLayer(uri, "Espinosa", "delimitedtext")
   caps =vlayer.dataProvider().capabilities()

Here is a comparison of what it should look like after import and what it does look like.

enter image description here

Does anyone know why it is rearranging the values?

2 Answers 2


It's having problems with the letter s, because your code specifies that as a delimiter (delimiter=%ss is getting interpreted as "," and "s"). Try delimiter=%s.


You can also use the format function of python if you have problems to format the string with %s. Python Format String Syntax

Your uri would look something like:

uri = "file:///D:/MLB Stadiums/Test_R2/Player_Files/Espinosa_2014.csv?

Or the second s in %ss after the delimiter is too much in this case. If you need it like this you can use "...delimiter=%s"%(",")+"s&xField..." for example.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.