我有一个长度未知的变量字符串,左边有重要的字符串,右边有不重要的东西,用一个空格隔开。如何删除右侧不重要的信息?
我尝试过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”作为标识符而不是“”。
谢谢大家!
答案 0 :(得分:9)
更新基于新字符串数据:
假设s
包含您的字符串:
s.split('\x00')[0]
产量
'NPC_me_lvup_event_contact()'
split()将为您提供由您使用split
指定的字符分隔的字符串列表。如果没有指定空格,则在这种情况下我们使用您感兴趣的十六进制字符。
答案 1 :(得分:2)
USE split('')[0]
>>> a = 'aaa bbb'
>>> a.split(' ')[0]
'aaa'
>>> >
答案 2 :(得分:1)
>>> mystring = 'important useless'
>>> mystring[:mystring.find(' ')]
'important'
答案 3 :(得分:1)
split()w / o分隔符按任何空格分割:
>>> "asdasd xyz".split()[0]
'asdasd'
答案 4 :(得分:0)
使用split()函数,并获取它返回的第一个项目:
raw_string = 'NPC_tester_contact() ) ntact() '
important = raw_string.split(' ')[0]
将返回:
NPC_tester_contact()
答案 5 :(得分:0)
str = "important unimportant"
important = str.split(' ')[0]
答案 6 :(得分:0)
试试这个:
lhs,rhs=s.split() #lhs is what you want.
仅当实际上只有一个空格时才有效。
否则,你可以获得lhs
(但你失去了rhs):
lhs=s.split()[0]
答案 7 :(得分:0)
试试这个,
将假设您的字符串存储在str
中
print str[0:str.index(" ")]
评论如果它不起作用,将解决它..
这是
My code str = "NPC_tester_contact() ) ntact() "
print str[0:str.index(" ")] output NPC_tester_contact() link http://ideone.com/i9haI
如果您希望输出包含双引号,那么 `print'“',str [0:str.index(”“)],'”'
答案 8 :(得分: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 = ''