Python 获取文本行中符号后的第一个字符串
我有一个文本行,我想给某个字符串分配一个变量,该字符串直接出现在这行文本中的符号“@”之后Python 获取文本行中符号后的第一个字符串,python,Python,我有一个文本行,我想给某个字符串分配一个变量,该字符串直接出现在这行文本中的符号“@”之后 09807754 18 n 03 aristocrat 0 blue_blood 0 patrician 0 013 @ 09623038 n 0000 唯一的问题是这个词可能不会出现在同一个位置,所以我不能就这样走 L = line.split() K = L[-2] 它必须作为“@”符号后的第一个字符串进行搜索。这是它唯一保持不变的地方 我想要的是对于K=09623038只需在@上拆分,然后拆分后
09807754 18 n 03 aristocrat 0 blue_blood 0 patrician 0 013 @ 09623038 n 0000
唯一的问题是这个词可能不会出现在同一个位置,所以我不能就这样走
L = line.split()
K = L[-2]
它必须作为“@”符号后的第一个字符串进行搜索。这是它唯一保持不变的地方
我想要的是对于
K=09623038
只需在@
上拆分,然后拆分后面的任何内容
before_at, after_at = line.split('@')
K = int(after_at.split()[0])
为了提高效率,如果您只想在@
之后做第一件事,请在.split(None,1)之后执行——只拆分一次(在空白处)
当存在多个@
时,这将引发异常,这些异常可能是您想要的,也可能不是您想要的。使用regex
:
>>> import re
>>> strs = '09807754 18 n 03 aristocrat 0 blue_blood 0 patrician 0 013 @ 09623038 n 0000'
>>> re.search(r'@\s+([A-Za-z0-9]+)',strs).group(1)
'09623038'
如果您更喜欢非正则表达式路径,这里有一个函数可以解决您的问题
def findVariable( s ):
try:
start = s.index( "@ " ) + 2
end = s.index( " ", start )
return s[start:end]
except ValueError:
return ""
print(findVariable("09807754 18 n 03 aristocrat 0 blue_blood 0 patrician 0 013 @ 09623038 n 0000"))
返回:09623038
是您的朋友:
>>> s='09807754 18 n 03 aristocrat 0 blue_blood 0 patrician 0 013 @ 09623038 n 0000'
>>> s.rpartition('@')
('09807754 18 n 03 aristocrat 0 blue_blood 0 patrician 0 013 ', '@', ' 09623038 n 0000')
>>> k=int(s.rpartition('@')[-1].split()[0])
>>> k
9623038
@kindall:除了分区
也返回@
,这在这里是一种无用的:)不幸的是,我发现了一行有两个'@'符号,这意味着可能有更多,我如何得到它,使它在第一个@符号处被拆分@kindall@Johnnerz:拆分('@',1)
只拆分一次。