小编nmr*_*nmr的帖子

如果存在字符则拆分字符串,否则不拆分

我有一个string喜欢下面的python

testing_abc
Run Code Online (Sandbox Code Playgroud)

我想根据元素分割字符串_并提取2元素

我已经做了如下

split_string = string.split('_')[1]
Run Code Online (Sandbox Code Playgroud)

我得到了预期的正确输出

abc
Run Code Online (Sandbox Code Playgroud)

现在我希望它适用于以下字符串

1) xyz
Run Code Online (Sandbox Code Playgroud)

当我使用

split_string = string.split('_')[1]
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

list index out of range
Run Code Online (Sandbox Code Playgroud)

我想要的预期输出是xyz

2) testing_abc_bbc
Run Code Online (Sandbox Code Playgroud)

当我使用

split_string = string.split('_')[1]
Run Code Online (Sandbox Code Playgroud)

我得到abc的输出

我想要的预期输出是abc_bbc

基本上我想要的是

1) If string contains `_` then print everything after the first `_` as variable
2) If string doesn't contain `_` then print the string as variable
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现我想要的

python python-3.x

4
推荐指数
1
解决办法
1955
查看次数

从倒数第三个下划线出现后的字符串中提取子字符串

我在 Linux shell 中有一个字符串。该字符串中包含下划线。

我想从字符串中提取一个子字符串。

我想提取第三次出现下划线之后的子字符串(从字符串末尾算起)。

file_name='email_Tracking_export_history_2018_08_15'
string_name="${file_name#*_*_*_}"
file_name2='email_Tracking_export_2018_08_15'
string_name2="${file_name2#*_*_*_}"

echo "$string_name"
echo "$string_name2"
Run Code Online (Sandbox Code Playgroud)

结果

history_2018_08_15
2018_08_15
Run Code Online (Sandbox Code Playgroud)

如您所见,string_name="${file_name#*_*_*_}"无法正常工作。

期望的结果:

2018_08_15
2018_08_15
Run Code Online (Sandbox Code Playgroud)

我怎样才能达到我想要的结果?

bash parameter-expansion

3
推荐指数
1
解决办法
1817
查看次数

替换 pyspark 数据框中列名称中的字符

我在 Pyspark 中有一个如下所示的数据框

df = spark.createDataFrame([(2,'john',1,1),
                            (2,'john',1,2),
                            (3,'pete',8,3),
                            (3,'pete',8,4),
                            (5,'steve',9,5)],
                           ['id','/na/me','val/ue', 'rank/'])

df.show()

+---+------+------+-----+
| id|/na/me|val/ue|rank/|
+---+------+------+-----+
|  2|  john|     1|    1|
|  2|  john|     1|    2|
|  3|  pete|     8|    3|
|  3|  pete|     8|    4|
|  5| steve|     9|    5|
+---+------+------+-----+
Run Code Online (Sandbox Code Playgroud)

/现在,在这个数据框中,我想替换scrore 下的列名称_。但是,如果/出现在列名称的开头或结尾,则删除 ,/但不要替换为_

我已经做了如下

for name in df.schema.names:
  df = df.withColumnRenamed(name, name.replace('/', '_'))


>>> df
DataFrame[id: bigint, _na_me: string, val_ue: bigint, rank_: bigint]


>>>df.show()
+---+------+------+-----+
| id|_na_me|val_ue|rank_|
+---+------+------+-----+ …
Run Code Online (Sandbox Code Playgroud)

python apache-spark pyspark

3
推荐指数
1
解决办法
5963
查看次数