Python 正则表达式分组字符串是否存在
我有一组字符串,如下所示:Python 正则表达式分组字符串是否存在,python,regex,Python,Regex,我有一组字符串,如下所示: Bought MSFT@Arca ABCD Bought Yahoo@Nasdaq Sold Google@Nasdaq ABCD 我想为所有字符串创建ABCD的数据帧 因此,所需的数据帧应该是这样的: ACBD NaN ABCD 如何首先使用正则表达式解析字符串?我尝试了(ABCD |),但返回为空。作为一个完整的代码片段: import pandas as pd, numpy as np string = """Bought MSFT@Arca ABCD
Bought MSFT@Arca ABCD
Bought Yahoo@Nasdaq
Sold Google@Nasdaq ABCD
我想为所有字符串创建ABCD的数据帧
因此,所需的数据帧应该是这样的:
ACBD
NaN
ABCD
如何首先使用正则表达式解析字符串?我尝试了(ABCD |)
,但返回为空。作为一个完整的代码片段:
import pandas as pd, numpy as np
string = """Bought MSFT@Arca ABCD
Bought Yahoo@Nasdaq
Sold Google@Nasdaq ABCD"""
needle = 'ABCD'
def search(line):
return needle if line.endswith(needle) else np.nan
df = pd.DataFrame((search(line) for line in string.split("\n")))
print(df)
这利用了.endswith()
、函数search()
和列表理解,并将生成
0
0 ABCD
1 NaN
2 ABCD
使用lambda函数甚至更短:
df = pd.DataFrame(map(lambda x: needle if x.endswith(needle) else np.nan, string.split("\n")))
print(df)
对于更个性化的解决方案,您需要详细说明实际的输入字符串。您已经尝试了哪些?如果您想使用正则表达式,是否检查了python的re文档?您可以使用
split
,然后使用最后一个元素@\w+[\t]+(\w+)?
。如果没有捕获组,您知道它是NaN
,那么最好取字符串的最后4个字符并检查它是否是==“ABCD”
?