如何只从 python 中的字符串中获取单词?
How to get only the word from a string in python?
我是 pandas 的新手,我遇到了字符串问题。所以我有一个字符串 s = "'hi'+'bikes'-'cars'>=20+'rangers'"
我只想要字符串中的单词,而不是符号或整数。我该怎么做?
我的输入:
s = "'hi'+'bikes'-'cars'>=20+'rangers'"
异常输出:
s = "'hi','bikes','cars','rangers'"
尝试使用正则表达式
s = "'hi'+'bikes'-'cars'>=20+'rangers'"
samp= re.compile('[a-zA-z]+')
word= samp.findall(s)
不确定pandas,但您也可以使用 Regex 来完成,这是解决方案
import re
s = "'hi'+'bikes'-'cars'>=20+'rangers'"
words = re.findall("(\'.+?\')", s)
output = ','.join(words)
print(output)
对于pandas,我首先将数据框中的列转换为字符串:
df
a b
0 'hi'+'bikes'-'cars'>=20+'rangers' 1
1 random_string 'with'+random,# 4
2 more,weird/stuff=wrong 6
df["a"] = df["a"].astype("string")
df["a"]
0 'hi'+'bikes'-'cars'>=20+'rangers'
1 random_string 'with'+random,#
2 more,weird/stuff=wrong
Name: a, dtype: string
现在可以看到dtype是string,也就是说可以对它进行字符串操作,
包括翻译和拆分 (pandas strings). But first you have to make a translate table with punctuation and digits imported from string module string docs
from string import digits, punctuation
然后制作一个字典,将每个数字和标点符号映射到空格
from itertools import chain
t = {k: " " for k in chain(punctuation, digits)}
使用 str.maketrans 创建翻译 table(python 3.8 不需要导入,但与其他版本可能有点不同)并应用翻译和拆分(使用 "str " 之间) 到列)
t = str.maketrans(t)
df["a"] = df["a"].str.translate(t).str.split()
df
a b
0 [hi, bikes, cars, rangers] 1
1 [random, string, with, random] 4
2 [more, weird, stuff, wrong] 6
如您所见,您现在只有这些词。
我是 pandas 的新手,我遇到了字符串问题。所以我有一个字符串 s = "'hi'+'bikes'-'cars'>=20+'rangers'"
我只想要字符串中的单词,而不是符号或整数。我该怎么做?
我的输入:
s = "'hi'+'bikes'-'cars'>=20+'rangers'"
异常输出:
s = "'hi','bikes','cars','rangers'"
尝试使用正则表达式
s = "'hi'+'bikes'-'cars'>=20+'rangers'"
samp= re.compile('[a-zA-z]+')
word= samp.findall(s)
不确定pandas,但您也可以使用 Regex 来完成,这是解决方案
import re
s = "'hi'+'bikes'-'cars'>=20+'rangers'"
words = re.findall("(\'.+?\')", s)
output = ','.join(words)
print(output)
对于pandas,我首先将数据框中的列转换为字符串:
df
a b
0 'hi'+'bikes'-'cars'>=20+'rangers' 1
1 random_string 'with'+random,# 4
2 more,weird/stuff=wrong 6
df["a"] = df["a"].astype("string")
df["a"]
0 'hi'+'bikes'-'cars'>=20+'rangers'
1 random_string 'with'+random,#
2 more,weird/stuff=wrong
Name: a, dtype: string
现在可以看到dtype是string,也就是说可以对它进行字符串操作, 包括翻译和拆分 (pandas strings). But first you have to make a translate table with punctuation and digits imported from string module string docs
from string import digits, punctuation
然后制作一个字典,将每个数字和标点符号映射到空格
from itertools import chain
t = {k: " " for k in chain(punctuation, digits)}
使用 str.maketrans 创建翻译 table(python 3.8 不需要导入,但与其他版本可能有点不同)并应用翻译和拆分(使用 "str " 之间) 到列)
t = str.maketrans(t)
df["a"] = df["a"].str.translate(t).str.split()
df
a b
0 [hi, bikes, cars, rangers] 1
1 [random, string, with, random] 4
2 [more, weird, stuff, wrong] 6
如您所见,您现在只有这些词。