rmac a écrit :

the following code attempts to extract a symbol name from a string:
    extensionStart = int(filename.rfind('.'))

rfind returns an int, so passing it to the int type constructor is useless.

    filenameStart = int(filename.rfind('/'))

idem

    #print 'Extension Start - ' + str(extensionStart)

The print statement isn't restricted to string objects. And FWIW, you can use string formating. The above should be either

  print "Extension start - ", extensionStart

or

  print "Extension start - %s" % extensionStart

As a side not, the naming convention in Python is to use all_lower for identifiers.

    #print 'FileName Start - ' + str(filenameStart)

idem.

    currentSymbol=filename[int(filenameStart),int(extensionStart)]

Two more useless int constructor calls.

Uncommenting the print statements clearly show the values to be
integers

If by 'the values', you mean objects bound to identifiers 'filenameStart' and 'extensionStart', I fail to see how they could be anything else...

(and without the str casts actually provide int+string
errors)

Indeed. What should be the semantic of expression
  'answer is ' + 42

???

However, executing this code results in...
    opening - /Users/rmac/Documents/Sandbox/data/MarketData/AA.csv
    Traceback (most recent call last):
      File "rHistFileToDB_Equities.py", line 25, in <module>
        currentSymbol=filename[int(filenameStart),int(extensionStart)]
    TypeError: string indices must be integers

the expression:

   int(filenameStart),int(extensionStart)

1/ takes the object currently bound to identifier 'filenameStart' and pass it to the int type constructor

2/ takes the object currently bound to identifier 'extensionStart' and pass it to the int type constructor

3/ build a tuple (actually, a pair of ints) from the results of the two above expressions



Then you try to use this tuple as an index on a string. A tuple is not a legal type for string (or any other sequence) subscripting.

The complete syntax for string subscripting is described in the FineManual. To make a long story short, it's :

    string[start:end:step]

where end and step are optionals.

IOW, the correct syntax here is:
    filename[filenameStart:extensionStart]


Now, while this is the correct *syntax*, it's not the correct *idiom*. There's a module named os.path, which provides the needed service. I leave it up to you to read the relevant part of the documentation...
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to