我有一个字符串
c=("Snap-on Power M1302A5 Imperial,IMPRL 0.062IN")
我需要将上面的字符串转换为
c=("Snap-on Power Imperial,IMPRL")
,即我需要删除包含字母和数字的字符串,
我怎么能在python中做到这一点?
我试过
c=c.apply(word_tokenize)
c = c.apply(lambda x: [item for item in x if item.isalpha()])
但得到了输出
c=("Snap-on Power MA Imperial,IMPRL IN")
答案 0 :(得分:3)
我不确定你到底想要什么,但似乎你想删除里面有数字的单词。在这种情况下,您可以在此处使用any()
:
>>> c = "Snap-on Power M1302A5 Imperial,IMPRL 0.062IN"
>>> ' '.join(w for w in c.split() if not any(x.isdigit() for x in w))
Snap-on Power Imperial,IMPRL
答案 1 :(得分:3)
同时添加基于regex
的解决方案:
c = "Snap-on Power M1302A5 Imperial,IMPRL 0.062IN"
only_a = []
for word in c.split():
#print(word)
if not re.search('\d',word):
#print(word)
only_a.append(word)
' '.join(only_a)
输出:'Snap-on Power Imperial,IMPRL'
答案 2 :(得分:1)
选择没有数字的单词
c = ' '.join([item for item in c.split() if not any(filter(str.isdigit, item))])
# ['Snap-on', 'Power', 'Imperial,IMPRL']
答案 3 :(得分:1)
这个答案与其他答案完全相同
步骤1:将字符串拆分为不同的单词
步骤2:检查每个单词是否包含数字,如果它确实跳过单词
步骤3:从没有数字的单词生成字符串
line = "Snap-on Power M1302A5 Imperial,IMPRL 0.062IN"
split_line = line.split(" ")
final_split_string = []
for word in split_line:
skip_word = False
for letter in word:
if letter.isdigit():
#check if the current word contains a number
skip_word = True
if not skip_word:
#skip a word if it contains number
final_split_string.append(word)
final_string = " ".join(final_split_string)
答案 4 :(得分:0)
您可以尝试这样的事情:
c="Snap-on Power M1302A5 Imperial,IMPRL 0.062IN"
import re
pattern=r'\d'
final=[]
for i in c.split():
if isinstance(i.split(','),list):
for m in i.split(','):
if re.search(pattern,m):
pass
else:
final.append(m)
print(" ".join(final))
输出:
Snap-on Power Imperial IMPRL