正则表达式分组字符串是否存在

时间:2017-10-17 13:52:33

标签: python regex

我有一堆字符串,如:

Bought MSFT@Arca ABCD
Bought Yahoo@Nasdaq 
Sold Google@Nasdaq ABCD

我想为所有字符串创建一个ABCD数据帧。

所以期望的数据框应该是这样的:

ACBD
NaN
ABCD

如何使用正则表达式首先解析字符串?我尝试(ABCD|),但返回空白。

1 个答案:

答案 0 :(得分:1)

整个片段:

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)

对于更个性化的解决方案,您需要详细说明实际的输入字符串。