On 06/22/2013 06:24 PM, Dave Angel wrote:
On 06/22/2013 07:03 PM, Jim Byrnes wrote:
On 06/22/2013 05:10 PM, David Rock wrote:
* Jim Byrnes <jf_byr...@comcast.net> [2013-06-22 16:01]:
I need to convert a series of digits like 060713 to a string so I can
make it look like a date 06-07-13.

  >>> a = 060713
  >>> a[:2]
Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
TypeError: 'int' object has no attribute '__getitem__'
  >>> b = str(a)
  >>> b[:2]
'25'
  >>> b
'25035'
  >>>

I was confused at first but then realized that the  0  makes it
octal. I
thought str() would do it but it didn't. Reading about str() it
talks of
string representation.  So how can I convert it to a true string I can
slice and build my date look a like?

Is there a requirement to store them as numbers in the first place?  Why
not just store them as a string?

a = '060713'


Yes. I am scripting data entry in a spreadsheet.  I can enter the 6
numbers

Six digits, not numbers.

quite rapidly using the number pad but entering the " - "'s to
make it look like a date slows me down.  So I thought I would let python
do that for me.


I don't have any experience with using Rxlorg to script the Gemdaddy
spreadsheet program.  Maybe if you actually got specific, somebody would
have familiarity with the ones you're using.

It is Calligrsheets. I didn't mention it because I was focused on the python error message I was seeing. Python version is 2.7.3.

Most likely all you have to do is specify with the spreadsheet that the
user is to enter a string.  If it makes some sort of assumption that
strings cannot start with a digit, then it's just broken.

I can set the cell contents as text or numeric and I can extract the info either as a string or an int. Each method gives it own error. The code is short so I will post it.

def regionChanged(regions):
        """ In column A. Converts data entered as mmddyy to mm-dd-yy """
        myCell = viewer.selection()
        print myCell
        if myCell[0] - 1 == 1:
                #cell_value = sheet.text(myCell[0] - 1, myCell[1])  #[1]
                cell_value = sheet.value(myCell[0] - 1, myCell[1])  #[2]
                print 'Type is ', type(cell_value)
                cell_value = cell_value[:2] + '-' + cell_value[2:4] + '-' + 
cell_value[4:]
                print 'Cell value is ', cell_value
                cell_name = sheet.cellName(myCell[0] - 1, myCell[1])
                writer.setCell(cell_name)
                writer.setValue(cell_name, cell_value)
                viewer.setSelection([2, myCell[1], 1, 1])

[1]  cell_value will always be a string.
[2]  cell_value will be a string or a long depending on cell type.

Here is the output from the terminal. Note: Kross is the plugin that enables Python scripting.


### code from [1], cell type = text ###
Kross: "PythonScript::Constructor."
Kross: "PythonScript::execute"
Kross: "PythonScript::execute result=None"
[2, 5, 1, 1]
Type is  <type 'str'>
Cell value is  06-25-13
Kross: "PythonInterpreter::extractException:
"
Kross: "PythonExtension::proxyhandler Had exception on line -1:
invalid literal for int() with base 10: '06-25-13'
"
ValueError: invalid literal for int() with base 10: '06-25-13'
Kross: "PythonScript::Destructor."


### code from [2], cell type = text ###
Kross: "PythonScript::Constructor."
Kross: "PythonScript::execute"
Kross: "PythonScript::execute result=None"
[2, 5, 1, 1]
Type is  <type 'str'>
Cell value is  06-25-13
Kross: "PythonInterpreter::extractException:
"
Kross: "PythonExtension::proxyhandler Had exception on line -1:
invalid literal for int() with base 10: '06-25-13'
"
ValueError: invalid literal for int() with base 10: '06-25-13'
Kross: "PythonScript::Destructor."


### code [1], cell type = numeric ###
Kross: "PythonScript::Constructor."
Kross: "PythonScript::execute"
Kross: "PythonScript::execute result=None"
[2, 5, 1, 1]
Type is  <type 'str'>
Cell value is  06-25-13
Kross: "PythonInterpreter::extractException:
"
Kross: "PythonExtension::proxyhandler Had exception on line -1:
invalid literal for int() with base 10: '06-25-13'
"
ValueError: invalid literal for int() with base 10: '06-25-13'
Kross: "PythonScript::Destructor."



### code [2], cell type numeric ###
Kross: "PythonScript::Constructor."
Kross: "PythonScript::execute"
Kross: "PythonScript::execute result=None"
[2, 5, 1, 1]
Type is  <type 'long'>
Kross: "PythonInterpreter::extractException:
File "file:///home/jfb/.kde/share/apps/sheets/scripts/enter_invoices.py", line 38, in regionChanged
"
TypeError: 'long' object has no attribute '__getitem__'
Kross: "PythonScript::Destructor."


Regards,  Jim

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to