标签: explode

PHP:使用特殊字符进行爆炸

我正在研究从会话中抓取的长字符串,该字符串使用"§"(部分符号)对字符串的不同部分进行分组和划分.

示例:"ArticleID | Title |Date§ArticleID| Title |Date§ArtinID| Title | Date"

我想把它放到一个数组中使用: explode("§",$str);

但是,出于某种原因,角色完全被忽略了.

我只是使用了一个不同的角色来使这个工作,但为什么PHP不能识别它?

php explode special-characters

5
推荐指数
1
解决办法
4865
查看次数

删除部分NSString

我有一个NSString如下:

<img alt="996453912" src="http://d2gg0uigdtw9zz.cloudfront.net/large/996453912.jpg" /><a href="http://www.dealcatcher.com/shop4tech-coupons">Shop4Tech Coupons</a>
Run Code Online (Sandbox Code Playgroud)

我只需要第一部分(部分之前<a href),我无法弄清楚如何删除第二部分.

我尝试了一吨,但它没有奏效.

substring explode nsstring ios4

5
推荐指数
1
解决办法
1万
查看次数

PHP爆炸字符串与数组?

是否有理由使用需要数组的字符串?

我有一个开发人员想要传递一个被删除的字符串,在数据库类方法中将其爆炸以从2个单独的字符串中提取多个字段/值对.我想不出没有发送字符串数组的理由.

例:

$s = "value1|value2|value3" ;
$s2 = explode("|", $s);
Run Code Online (Sandbox Code Playgroud)

vs一个数组

$s3 = array(
    "1" => "value1",
    "2" => "value2",
);
Run Code Online (Sandbox Code Playgroud)

我知道这个想法是实际传递未知数量的键/值对,但我不认为你爆炸的字符串就是答案.但我可能是错的.

php arrays string explode

5
推荐指数
1
解决办法
1297
查看次数

PHP换行符,小写字母符合大写字母

我有一个字符串,如下所示:

$string = "New video gameSome TV showAnother item";
Run Code Online (Sandbox Code Playgroud)

我希望能够单独访问每个项目,以获得类似以下输出:

New video game
Some TV show
Another item
Run Code Online (Sandbox Code Playgroud)

如何在字符串或其他随机字符中的每个项目名称之后添加\n,以后我可以将其分解为数组以单独访问字符串中的每个项目?

php arrays explode

5
推荐指数
1
解决办法
399
查看次数

正则表达式作为分隔符在explode()中

所以我有一个字符串,我正在变成一个数组,但我想用正则表达式分隔每个单词.我使用下面的函数匹配整个单词.

function substr_count_array($haystack, $needle)
{
     $initial = 0;
     $bits = explode(' ', $haystack);

     foreach ($needle as $substring) 
     {
        if (!in_array($substring, $bits))
        {
            continue;
        }

        $initial += substr_count($haystack, $substring);
     }

     return $initial;
}
Run Code Online (Sandbox Code Playgroud)

问题是它匹配字符串animal,但不是animals.如果我像这样做部分匹配:

function substr_count_array2($haystack, $needle)
{
     $initial = 0;

     foreach ($needle as $substring) 
     {
          $initial += substr_count($haystack, $substring);
     }

     return $initial;
}
Run Code Online (Sandbox Code Playgroud)

它也匹配,a因为它包含了单词animals和返回2.如何explode()使用正则表达式作为分隔符,以便我可以匹配每个长度为5-7个字符的字符串?

解释得更简单:

$animals = array('cat','dog','bird');
$toString = implode(' ', $animals);
$data = array('a');

echo substr_count_array($toString, …
Run Code Online (Sandbox Code Playgroud)

php regex arrays explode

5
推荐指数
1
解决办法
5756
查看次数

拆分URL的PHP​​字符串

我怎样才能返回TLD域名

例如,如果我有以下内容:

www.domain.co.uk 我想要回归 .co.uk

同样的 domain.co.uk

和其他所有人一样 TLDs (.com, .co, .org etc)

是否有一种简单的方法可以在PHP中执行此操作而不使用 Regex

我正在考虑使用,explode但我不太熟悉

php regex string url explode

5
推荐指数
1
解决办法
162
查看次数

Python - Pandas - DataFrame - 根据条件将单列分解为多个布尔列

早上好,伙计们,

基于某些条件(在这种情况下为 str.contains),任何将数据框列分解为带有布尔标志的多列的 Pythonic 方法?

假设我有这个:

Position Letter 
1        a      
2        b      
3        c      
4        b      
5        b
Run Code Online (Sandbox Code Playgroud)

我想实现这一目标:

Position Letter is_a     is_b    is_C
1        a      TRUE     FALSE   FALSE
2        b      FALSE    TRUE    FALSE
3        c      FALSE    FALSE   TRUE
4        b      FALSE    TRUE    FALSE
5        b      FALSE    TRUE    FALSE 
Run Code Online (Sandbox Code Playgroud)

可以通过 'abc' 进行循环并显式创建新的 df 列,但想知道 pandas 中是否已经存在某些内置方法。可能值的数量,因此新列的数量是可变的。

感谢致敬。

python boolean explode dataframe pandas

5
推荐指数
1
解决办法
852
查看次数

PySpark“爆炸”列中的字典

我在 spark 数据框中有一列“true_recoms”:

-RECORD 17----------------------------------------------------------------- 
item        | 20380109                                                                                                                                                                  
true_recoms | {"5556867":1,"5801144":5,"7397596":21}          
Run Code Online (Sandbox Code Playgroud)

我需要“爆炸”这个列来得到这样的东西:

item        | 20380109                                                                                                                                                                  
recom_item  | 5556867
recom_cnt   | 1
..............
item        | 20380109                                                                                                                                                                  
recom_item  | 5801144
recom_cnt   | 5
..............
item        | 20380109                                                                                                                                                                  
recom_item  | 7397596
recom_cnt   | 21
Run Code Online (Sandbox Code Playgroud)

我试过使用 from_json 但它不起作用:

    schema_json = StructType(fields=[
        StructField("item", StringType()),
        StructField("recoms", StringType())
    ])
    df.select(col("true_recoms"),from_json(col("true_recoms"), schema_json)).show(5)

+--------+--------------------+------+
|    item|         true_recoms|true_r|
+--------+--------------------+------+
|31746548|{"32731749":3,"31...|   [,]|
|17359322|{"17359392":1,"17...|   [,]|
|31480894|{"31480598":1,"31...|   [,]|
| 7265665|{"7265891":1,"503...|   [,]|
|31350949|{"32218698":1,"31...|   [,]|
+--------+--------------------+------+
only showing top 5 rows
Run Code Online (Sandbox Code Playgroud)

explode apache-spark pyspark

5
推荐指数
1
解决办法
5938
查看次数

如何在 Apache Spark 中爆炸 get_json_object

我的数据框列之一中有以下字符串:

row1:[{"key":"foo"},{"key":"bar"},{"key":"baz"}]
row2:[{"key":"foo"},{"key":"bar"}]
row3:null
etc
Run Code Online (Sandbox Code Playgroud)

我发现 Spark 具有“get_json_object”功能。因此,如果我想使用 xpath 提取数据,我将使用:

 get_json_object($"json", s"$[0].key")
Run Code Online (Sandbox Code Playgroud)

会返回:

"foo"
"foo"
null
Run Code Online (Sandbox Code Playgroud)

但我需要相当于 Spark 的“爆炸”功能。

我发现我可以在 xpath 上使用“*”符号。

 get_json_object($"json", s"$[*].key")
Run Code Online (Sandbox Code Playgroud)

哪个不按预期执行,它将创建一个字符串,如:

[foo,bar,baz]
[foo,baz]
Run Code Online (Sandbox Code Playgroud)

我在另一个 stackoverflow 线程中找到了解决方案,

val jsonElements = (0 until 3).map(i => get_json_object($"json", s"$$[$i].key"))


val jsonElements = .map(i => get_json_object($"json", s"$$[$i].key"))
df.select($"id",explode(array(jsonElements: _*).alias("foo")))
Run Code Online (Sandbox Code Playgroud)

这部分解决了我的问题,因为这个解决方案假定我知道我的阵列的最大深度。Spark 的函数“from_json”需要模式,我有巨大的复杂 JSON 类型需要“无限”的时间来创建模式。

免责声明

我不会使用任何正则表达式/子字符串/等来解析 JSON。使用解析器的整个建议就是这样。

arrays json explode apache-spark apache-spark-sql

5
推荐指数
1
解决办法
1万
查看次数

熊猫爆炸失败,KeyError: 0

一个pandas.DataFrame.explode作品如何?

在文档中:

https://pandas.pydata.org/pandas-docs/version/0.25/reference/api/pandas.DataFrame.explode.html

df = pd.DataFrame({'A': [[1, 2, 3], 'foo', [], [3, 4]], 'B': 1})
display(df)
print(df.columns)
print(df.dtypes)
df.explode('A')
Run Code Online (Sandbox Code Playgroud)

工作得很好。但是对于我的数据,它因一个关键异常而失败。我的数据最初是这样的: 在此处输入图片说明

具有以下类型:

print(foo.columns)
print(foo.dtypes)
Index(['model', 'id_min_days_cutoff'], dtype='object')
model                 object
id_min_days_cutoff     int64
dtype: object
Run Code Online (Sandbox Code Playgroud)

其中model是使用 statsmodels 回归获得的:

model.summary2().tables[1]
Run Code Online (Sandbox Code Playgroud)

调用时:df.explode('model')

它失败了:

KeyError: 0
Run Code Online (Sandbox Code Playgroud)

试图重现这一点:

df_json = df.to_json()

# now load it again for SF purposes
df_json = '{"model":{"0":{"Coef.":{"ALQ_15PLUS_perc":95489.7866599741,"AST_perc":-272.9213162565,"BEV_UNTER15_perc":6781.448845533,"BEV_UEBER65_perc":-46908.2889142205},"Std.Err.":{"ALQ_15PLUS_perc":1399665.9788843254,"AST_perc":1558.1286516172,"BEV_UNTER15_perc":2027111.8764156068,"BEV_UEBER65_perc":1230965.9812726702},"z":{"ALQ_15PLUS_perc":0.0682232676,"AST_perc":-0.1751596802,"BEV_UNTER15_perc":0.0033453747,"BEV_UEBER65_perc":-0.038106893},"P>|z|":{"ALQ_15PLUS_perc":0.9456079052,"AST_perc":0.8609541651,"BEV_UNTER15_perc":0.9973307821,"BEV_UEBER65_perc":0.9696024555},"[0.025":{"ALQ_15PLUS_perc":-2647805.1223393031,"AST_perc":-3326.7973567063,"BEV_UNTER15_perc":-3966284.8215624653,"BEV_UEBER65_perc":-2459557.2784026605},"0.975]":{"ALQ_15PLUS_perc":2838784.6956592514,"AST_perc":2780.9547241933,"BEV_UNTER15_perc":3979847.7192535317,"BEV_UEBER65_perc":2365740.7005742197}},"1":{"Coef.":{"ALQ_15PLUS_perc":-140539.5196612777,"AST_perc":142.579413527,"BEV_UNTER15_perc":-45288.5612893498,"BEV_UEBER65_perc":-152106.9841374909},"Std.Err.":{"ALQ_15PLUS_perc":299852250.9155113101,"AST_perc":24013.7007484301,"BEV_UNTER15_perc":417010365.7919532657,"BEV_UEBER65_perc":171876588.9403209388},"z":{"ALQ_15PLUS_perc":-0.0004686959,"AST_perc":0.0059374194,"BEV_UNTER15_perc":-0.000108603,"BEV_UEBER65_perc":-0.0008849779},"P>|z|":{"ALQ_15PLUS_perc":0.9996260348,"AST_perc":0.9952626525,"BEV_UNTER15_perc":0.9999133474,"BEV_UEBER65_perc":0.9992938899},"[0.025":{"ALQ_15PLUS_perc":-587840151.997330904,"AST_perc":-46923.4091889186,"BEV_UNTER15_perc":-817370586.6933914423,"BEV_UEBER65_perc":-337024031.0927618742},"0.975]":{"ALQ_15PLUS_perc":587559072.9580082893,"AST_perc":47208.5680159725,"BEV_UNTER15_perc":817280009.5708128214,"BEV_UEBER65_perc":336719817.1244869232}}},"id_min_days_cutoff":{"0":2,"1":3}}'
pd.read_json(df_json).explode('model')
Run Code Online (Sandbox Code Playgroud)

失败:

KeyError: 0
Run Code Online (Sandbox Code Playgroud)

编辑

尝试使用以下方法之一找到替代方法:如何在 Pandas DataFrame 中取消嵌套(分解)一列?选择 2.1

pd.DataFrame({'model':np.concatenate(df_json.model.values)},
               index=df_json.index.repeat(ddf_jsonf.model.str.len()))
Run Code Online (Sandbox Code Playgroud)

但这失败了:

ValueError: zero-dimensional arrays cannot be concatenated …
Run Code Online (Sandbox Code Playgroud)

python explode pandas keyerror

5
推荐指数
1
解决办法
1113
查看次数