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