Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 提取部分字符串匹配直到列中的特定字符_Python_Pandas_Dataframe_Slice - Fatal编程技术网

Python 提取部分字符串匹配直到列中的特定字符

Python 提取部分字符串匹配直到列中的特定字符,python,pandas,dataframe,slice,Python,Pandas,Dataframe,Slice,我想从列的行中提取与部分字符串匹配的字符串,直到满足特定字符 我希望列_3中所有以“String_”开头直到“;”字符的字符串 DF包含如下内容: Column_1 column_2 column_3 A B X;A;B;String_123;C Y L Y;Q;S;D;F;String_463;F;L;U P Q K;E;TX;String_103;1;1;D;

我想从列的行中提取与部分字符串匹配的字符串,直到满足特定字符

我希望列_3中所有以“String_”开头直到“;”字符的字符串

DF包含如下内容:

Column_1    column_2    column_3 
A           B           X;A;B;String_123;C
Y           L           Y;Q;S;D;F;String_463;F;L;U
P           Q           K;E;TX;String_103;1;1;D;F
我想要的只是这些值:

String_123
String_463
String_103
运行:

df.column_3.str.extract(r'(?PString_[^;]+))
提取方法匹配捕获组。 为了便于识别,我给这个组命名,它将是输出列的名称

首先使用的正则表达式只匹配“字符串”,然后匹配非空序列
对于“;”以外的字符,可以使用正则表达式提取此信息。正则表达式将惰性地匹配字符串“string_”,然后匹配0个或多个字符,直到它看到第一个逗号

data_str = """Column_1    column_2    column_3 
A           B           X;A;B;String_123;C
Y           L           Y;Q;S;D;F;String_463;F;L;U
P           Q           K;E;TX;String_103;1;1;D;F"""

data = [line.split() for line in data_str.splitlines()]
import pandas as pd
df = pd.DataFrame(data[1:], columns=data[0])
print(df['column_3'].str.extract(r'(String_.*?);'))
输出

            0
0  String_123
1  String_463
2  String_103

字符串是否总是在2之后出现?否,每行“;”的数量可能不同。
            0
0  String_123
1  String_463
2  String_103