我使用的是一个类成员函数,它在定义它的类中调用时的效果与在外部调用它时的效果不同。
def getLexid(self, senseKey):
lexid = ""
senseKeyParts = senseKey.split("%")
if len(senseKeyParts) > 1:
sense_number = senseKeyParts[1]
# System.out.print("sense number: " + sense_number + '\n');
senseNumParts = sense_number.split(":")
if len(senseNumParts) > 1:
lexid = senseNumParts[1]
print("lexid:",lexid,"|")
return lexid
这是内部呼叫:
def getLexname(self, senseKey):
lexname = ""
lexid = self.getLexid(senseKey).strip()
print("Getting lexname with lexid:",senseKey,"(",lexid,")")
print("Getting lexname with lexid:",senseKey.strip(),"(",lexid.strip(),")")
当我从外部调用getLexname时:
wordnet_obj = wordnet.WordNet()
lexname = wordnet_obj.getLexname('forester%1:18:00::')
我明白了:
lexid: 18 |
Getting lexname with lexid: forester%1:18:00:: ( 18 )
Getting lexname with lexid: forester%1:18:00:: ( 18 )
结果用空格填充,而.strip()似乎没有效果。 但是,当我从外部调用getLexid时:
wordnet_obj = wordnet.WordNet()
lexid2 = wordnet_obj.getLexid('forester%1:18:00::')
print("lexid2:",lexid2)
我得到了,正如所料:
('lexid:','18')
感谢您的帮助!
答案 0 :(得分:1)
实际上您正在看到print的行为:
将对象打印到文本流文件,以sep分隔,然后结束。 sep,end和file(如果存在)必须作为关键字参数给出
默认情况下,分隔符(sep)是一个空格单个空格。
在您的示例中,您要比较两个不同的打印语句print('prefix', '18')
和print('(', '18', ')')
的输出。
从外部调用的示例输出位开始,我收集到您正在使用Python 3.对于Python 3,您将得到:
>>> print('prefix', '18') # This differs from your example maybe you had another pair of parentheses?
prefix 18
>>> print('(', '18', ')') # Note the spaces around the number.
( 18 )
您可以通过指定空分隔符来更改行为:
>>> print('(', '18', ')', sep='')
(18)