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)
只拆分一次。