1

我有一个长度未知的变量字符串,左侧有重要字符串,右侧有不重要的内容,由一个空格分隔。如何删除右侧不重要的信息?

我试过rstrip,但没有成功。

编辑:我将放置需要修复的实际值。

"NPC_tester_contact() ) ntact()                                                                                                                                                                                                                 "

第一个空格(右括号左侧的空格)应该将包括自身在内的所有内容标记为不重要。

编辑:输出应该是“ NPC_tester_contact()”!

仔细看看我放在上面的绳子。后面还有很多空格。我认为这是导致打嗝的原因。

我在这里尝试了大多数解决方案,它们要么不做任何事情,要么只产生空格。

repr(s)给我。

'NPC_me_lvup_event_contact()\x00t()\x00act()\x00act()\x00ntact()\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

应该是“ NPC_me_lvup_event_contact()”。

谢谢!

也许这是一个更好的问题。有没有办法删除字符串中出现的第一个 \x00 十六进制之后的所有字符?

出于某种原因,它有时有效,但并不总是有效。上面的示例是使用 Levon 发布的方法完成的。

解决方案:问题解决了。这更像是一个空字节而不是一个空格字节。解决方案可以是以下任何一种,使用“\x00”作为标识符而不是“”。

谢谢大家!

4

9 回答 9

9

基于字符串数据的更新:

假设s包含您的字符串:

s.split('\x00')[0]

产量

'NPC_me_lvup_event_contact()'

split()将为您提供由您指定的字符分隔的字符串列表split。如果没有指定使用空格,在这种情况下我们使用您感兴趣的十六进制字符。

于 2012-06-02T15:35:08.723 回答
2

使用拆分('')[0]

 >>> a = 'aaa bbb'
    >>> a.split(' ')[0]
    'aaa'
    >>> >
于 2012-06-02T15:37:04.750 回答
1
>>> mystring = 'important useless'
>>> mystring[:mystring.find(' ')]
'important'
于 2012-06-02T15:39:12.563 回答
1

split() w/o delimiter 按任何空格分割:

>>> "asdasd         xyz".split()[0]
'asdasd'
于 2012-06-02T15:39:48.197 回答
0

使用 split() 函数,并获取它返回的第一项:

raw_string = 'NPC_tester_contact() ) ntact()  '
important = raw_string.split(' ')[0]

将返回:

NPC_tester_contact()
于 2012-06-02T15:37:48.923 回答
0
str = "important unimportant"
important = str.split(' ')[0]
于 2012-06-02T15:39:17.487 回答
0

试试这个:

lhs,rhs=s.split()  #lhs is what you want.

这仅在确实只有一个空间时才有效。

否则,您可以lhs通过(但您会失去 rhs):

lhs=s.split()[0]
于 2012-06-02T15:39:26.233 回答
0

试试这个, 会假设你的字符串存储在str
print str[0:str.index(" ")]

如果它不起作用,请发表评论,将解决它..

这是

我的代码
str = "NPC_tester_contact() ) ntact() "
打印 str[0:str.index(" ")] 输出 NPC_tester_contact() 关联 http://ideone.com/i9haI

如果您希望输出用双引号括起来,那么 `print '"',str[0:str.index(" ")],'"'

于 2012-06-02T15:52:09.683 回答
0

您也可以使用正则表达式类型的解决方案。就像是:

import re

input_string = 'NPC_me_lvup_event_contact()\x00t()\x00act()\x00act()\x00ntact()\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

string_pat = re.compile(r'[a-zA-Z0-9\(\)_]+')
try:
    first_part = string_pat.findall(input_string)[0]
except IndexError:
    # There is nothing of interest for you in this string
    first_part = ''
于 2012-06-02T16:32:53.750 回答