Python 使用regex_extract循环遍历字符串列表

Python 使用regex_extract循环遍历字符串列表,python,regex,string,list,loops,Python,Regex,String,List,Loops,我有一个满是字符串的列表 List = ['NYC','Austin','San Diego', 'New Orleans','LA'] 我有一个数据框,其中有一列“raw”。“原始”中的所有值都是字典值。例如: {'NYC':'COOL','Austin':'mild','San Diego':'hot','New Orleans':'cold','LA':'CHILL'} 我有一个循环,我想使用regex_extract从上面列表中包含字符串的“raw”列中提取值,并为Pyspark d

我有一个满是字符串的列表

List = ['NYC','Austin','San Diego', 'New Orleans','LA']
我有一个数据框,其中有一列“raw”。“原始”中的所有值都是字典值。例如:

{'NYC':'COOL','Austin':'mild','San Diego':'hot','New Orleans':'cold','LA':'CHILL'}
我有一个循环,我想使用regex_extract从上面列表中包含字符串的“raw”列中提取值,并为Pyspark dataframe中的每个列创建一个新列

for field in list:
    df = df \
    .withColumn(field, F.regexp_extract("raw",''+urllib.quote(field)+':"([^"]*)"', 1)) 
但是当我这样做的时候,它就不起作用了

所以,最终的目标是要有所有这些专栏:'原始','纽约','奥斯汀','圣地亚哥','新奥尔良','洛杉矶'

想知道如何在这里输入参数值吗?

试试这个

schema = df.select(schema_of_json(df.select(regexp_replace('raw',' ','_')).first()[0])).first()[0]


df.select(from_json(regexp_replace('raw',' ','_'),schema).alias('data')).\
   select('data.*').show()

+------+-----+----+-----------+---------+
|Austin|   LA| NYC|New_Orleans|San_Diego|
+------+-----+----+-----------+---------+
|  mild|CHILL|COOL|       cold|      hot|
|  mild|CHILL|COOL|       cold|      hot|
+------+-----+----+-----------+---------+
试试这个

schema = df.select(schema_of_json(df.select(regexp_replace('raw',' ','_')).first()[0])).first()[0]


df.select(from_json(regexp_replace('raw',' ','_'),schema).alias('data')).\
   select('data.*').show()

+------+-----+----+-----------+---------+
|Austin|   LA| NYC|New_Orleans|San_Diego|
+------+-----+----+-----------+---------+
|  mild|CHILL|COOL|       cold|      hot|
|  mild|CHILL|COOL|       cold|      hot|
+------+-----+----+-----------+---------+