Python - adding variable inside a string

csehz
csehz used Ask the Experts™
on
Dear Experts,

Actually having the following Python code to import .csv file and it works fine:

import csv

with open(r"C:\File.csv") as csvfile:
    rows = list(csv.reader(csvfile))
    data_header = rows[0]
    data_rows = rows[1:]
    

Open in new window


I would like to restructure a little bit with adding the path to a variable as FilePath and using that in the open command, around like this (it does not work of course in this format)

import csv

FilePath = "C:\File.csv"

with open(r % FilePath) as csvfile:
    rows = list(csv.reader(csvfile))
    data_header = rows[0]
    data_rows = rows[1:]
    

Open in new window


Could you please advice about the Python syntax including a variable like that?

Thanks in advance,
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Subodh Tiwari (Neeraj)Excel & VBA Expert
Most Valuable Expert 2018
Awarded 2015

Commented:
This should work...

with open(FilePath) as csvfile:

Open in new window

csehzIT consultant

Author

Commented:
@Neeraj thanks for the advice, with that syntax getting the following error message:

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

Presumably that 'r' sign should be somehow added at the beginning as it is in the format of

with open(r"C:\File.csv") as csvfile:

Open in new window

Subodh Tiwari (Neeraj)Excel & VBA Expert
Most Valuable Expert 2018
Awarded 2015
Commented:
Did you try FilePath = r"C:\File.csv"?
Starting with Angular 5

Learn the essential features and functions of the popular JavaScript framework for building mobile, desktop and web applications.

It should be
import csv

FilePath = r"C:\File.csv"    # the r should be here

with open(FilePath) as csvfile:
    rows = list(csv.reader(csvfile))
    data_header = rows[0]
    data_rows = rows[1:]

Open in new window

The r % FilePath does not make sense here. The r in r'string literal' is just a string literal prefix that says that the content should not be interpreted. It means that you need not prefix the backslash (to double it). The r is from raw string. It is similar (but not the same) as @"string literal" in C# (or the like special sequence in C++ or in other languages). Alternatively, you can accept the Unix path style with normal slashes, like FilePath = 'C:/File.csv'

You should also read the Style Guide for Python concering the naming conventions. I understand that they may be different in other languages, but it will help you to understand Python code in long term. ;)
csehzIT consultant

Author

Commented:
@pepr thanks a lot for the explanation, it works of course like that
Subodh Tiwari (Neeraj)Excel & VBA Expert
Most Valuable Expert 2018
Awarded 2015

Commented:
Didn't I offer the same solution? :)
csehzIT consultant

Author

Commented:
@Neeraj oops you are right just when came in the morning did not catch that you also answered :(

Sorry again as you again did not get the well deserved points (as we spoke I caused that you did not got all the 1000 in the other thread) :(
Subodh Tiwari (Neeraj)Excel & VBA Expert
Most Valuable Expert 2018
Awarded 2015

Commented:
Never mind. :)

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial