我正在研究从会话中抓取的长字符串,该字符串使用"§"(部分符号)对字符串的不同部分进行分组和划分.
示例:"ArticleID | Title |Date§ArticleID| Title |Date§ArtinID| Title | Date"
我想把它放到一个数组中使用:
explode("§",$str);
但是,出于某种原因,角色完全被忽略了.
我只是使用了一个不同的角色来使这个工作,但为什么PHP不能识别它?
我有一个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),我无法弄清楚如何删除第二部分.
我尝试了一吨,但它没有奏效.
是否有理由使用需要数组的字符串?
我有一个开发人员想要传递一个被删除的字符串,在数据库类方法中将其爆炸以从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)
我知道这个想法是实际传递未知数量的键/值对,但我不认为你爆炸的字符串就是答案.但我可能是错的.
我有一个字符串,如下所示:
$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,以后我可以将其分解为数组以单独访问字符串中的每个项目?
所以我有一个字符串,我正在变成一个数组,但我想用正则表达式分隔每个单词.我使用下面的函数匹配整个单词.
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) 我怎样才能返回TLD域名
例如,如果我有以下内容:
www.domain.co.uk 我想要回归 .co.uk
同样的 domain.co.uk
和其他所有人一样 TLDs (.com, .co, .org etc)
是否有一种简单的方法可以在PHP中执行此操作而不使用 Regex
我正在考虑使用,explode但我不太熟悉
早上好,伙计们,
基于某些条件(在这种情况下为 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 中是否已经存在某些内置方法。可能值的数量,因此新列的数量是可变的。
感谢致敬。
我在 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) 我的数据框列之一中有以下字符串:
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。使用解析器的整个建议就是这样。
一个pandas.DataFrame.explode作品如何?
在文档中:
https://pandas.pydata.org/pandas-docs/version/0.25/reference/api/pandas.DataFrame.explode.html
Run Code Online (Sandbox Code Playgroud)df = pd.DataFrame({'A': [[1, 2, 3], 'foo', [], [3, 4]], 'B': 1}) display(df) print(df.columns) print(df.dtypes) df.explode('A')
工作得很好。但是对于我的数据,它因一个关键异常而失败。我的数据最初是这样的:

具有以下类型:
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)