Python Forum
YANQ: Yet Another Newbie Question !
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
YANQ: Yet Another Newbie Question !
#1
Here is the code I try to improve:

	def getEventFromId(self, service, eventid):
		event = None
		if self.epgcache is not None and eventid is not None:
			event = self.epgcache.lookupEventId(service.ref, eventid)
		return event
When I print service.ref.ToString(), I have '4097:1:5:23'
I want to change "4097:" into "1:" without changing "service".
Something like:
	def getEventFromId(self, service, eventid):
		event = None
		if self.epgcache is not None and eventid is not None:
			service2 = service
			mywork=str(service)
			if mywork.startswith("4097:"):
				service2=  [b]??? [/b]mywork.replace("4097:","1:",1)
			event = self.epgcache.lookupEventId(service2.ref, eventid)
		return event
I am also a bit confuse about the meaning of "service.ref" !

Thanks for help.
Reply
#2
Without knowing what service is, we should assume it's an object, and ref is just a property of that object.  We can fake it like so:
>>> class Service:
...   def __init__(self, tag):
...     self.ref = tag
...
>>> service = Service("4097:1:5:23")
>>> service.ref
'4097:1:5:23'
If that's true (...and it might not be), then we could take the fact that strings are immutable in python, and work with it directly...
>>> service.ref.startswith("4097:")
True
>>> new_tag = service.ref.replace("4097:", "1:", 1)
>>> service.ref
'4097:1:5:23'
>>> new_tag
'1:1:5:23'
Because strings are immutable, we have the new tag that we wanted (with 4097 replaced with 1), while service.ref is left unchanged.

Also, I added a count parameter to service.ref.replace, so that only the first 4097 found will be replaced.  That way, if the tag happens to look like "4097:1:4097:23", it won't be changed to "1:1:1:23".
Reply
#3
Some feedback:
1) service.ref.replace(...)
Crash: service.ref has no attribute replace
2) service.ref=service2.ref(mywork.replace("4097:","1:",1))
Crash: TypeError: 'eServiceReference' object is not callable

I have found this for eServicereference:

class eServiceReference(object):
    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    idInvalid = _enigma.eServiceReference_idInvalid
    idStructure = _enigma.eServiceReference_idStructure
    idDVB = _enigma.eServiceReference_idDVB
    idFile = _enigma.eServiceReference_idFile
    idUser = _enigma.eServiceReference_idUser
    type = _swig_property(_enigma.eServiceReference_type_get, _enigma.eServiceReference_type_set)
    isDirectory = _enigma.eServiceReference_isDirectory
    mustDescent = _enigma.eServiceReference_mustDescent
    canDescent = _enigma.eServiceReference_canDescent
    flagDirectory = _enigma.eServiceReference_flagDirectory
    shouldSort = _enigma.eServiceReference_shouldSort
    hasSortKey = _enigma.eServiceReference_hasSortKey
    sort1 = _enigma.eServiceReference_sort1
    isMarker = _enigma.eServiceReference_isMarker
    isGroup = _enigma.eServiceReference_isGroup
    flags = _swig_property(_enigma.eServiceReference_flags_get, _enigma.eServiceReference_flags_set)
    def __init__(self, *args): 
        _enigma.eServiceReference_swiginit(self,_enigma.new_eServiceReference(*args))
    __swig_destroy__ = _enigma.delete_eServiceReference
eServiceReference.getSortKey = new_instancemethod(_enigma.eServiceReference_getSortKey,None,eServiceReference)
eServiceReference.getPath = new_instancemethod(_enigma.eServiceReference_getPath,None,eServiceReference)
eServiceReference.setPath = new_instancemethod(_enigma.eServiceReference_setPath,None,eServiceReference)
eServiceReference.getUnsignedData = new_instancemethod(_enigma.eServiceReference_getUnsignedData,None,eServiceReference)
eServiceReference.getData = new_instancemethod(_enigma.eServiceReference_getData,None,eServiceReference)
eServiceReference.setUnsignedData = new_instancemethod(_enigma.eServiceReference_setUnsignedData,None,eServiceReference)
eServiceReference.setData = new_instancemethod(_enigma.eServiceReference_setData,None,eServiceReference)
eServiceReference.getName = new_instancemethod(_enigma.eServiceReference_getName,None,eServiceReference)
eServiceReference.setName = new_instancemethod(_enigma.eServiceReference_setName,None,eServiceReference)
eServiceReference.toString = new_instancemethod(_enigma.eServiceReference_toString,None,eServiceReference)
eServiceReference.toCompareString = new_instancemethod(_enigma.eServiceReference_toCompareString,None,eServiceReference)
eServiceReference.__eq__ = new_instancemethod(_enigma.eServiceReference___eq__,None,eServiceReference)
eServiceReference.__ne__ = new_instancemethod(_enigma.eServiceReference___ne__,None,eServiceReference)
eServiceReference.__lt__ = new_instancemethod(_enigma.eServiceReference___lt__,None,eServiceReference)
eServiceReference.valid = new_instancemethod(_enigma.eServiceReference_valid,None,eServiceReference)
eServiceReference_swigregister = _enigma.eServiceReference_swigregister
eServiceReference_swigregister(eServiceReference)
Reply
#4
Neat.  service.ref.toString().replace( instead, then.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  How is pandas modifying all rows in an assignment - python-newbie question markm74 1 651 Nov-28-2023, 10:36 PM
Last Post: deanhystad
  newbie question - can't make code work tronic72 2 626 Oct-22-2023, 09:08 PM
Last Post: tronic72
  Newbie question about switching between files - Python/Pycharm Busby222 3 542 Oct-15-2023, 03:16 PM
Last Post: deanhystad
  Newbie.... run for cover. OpenCV question Stevolution2023 2 920 Apr-12-2023, 12:57 PM
Last Post: Stevolution2023
  numpy newbie question bcwilly_ca 4 1,127 Feb-10-2023, 05:55 PM
Last Post: jefsummers
  Question from complete python's newbie Davicom 3 2,304 Jun-09-2021, 06:09 PM
Last Post: bowlofred
  Newbie question about running Python via GUI on OSX ejwjohn 8 3,445 Feb-05-2021, 03:20 PM
Last Post: Larz60+
  super newbie question: escape character tsavoSG 3 2,397 Jan-13-2021, 04:31 AM
Last Post: tsavoSG
  newbie question....importing a created class ridgerunnersjw 5 2,569 Oct-01-2020, 07:59 PM
Last Post: ridgerunnersjw
  Dumb newbie question JonEdward 5 3,169 Jul-22-2020, 10:06 PM
Last Post: snippsat

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020