繁体   English   中英

在python中删除同时包含字母和数字的字符串

[英]remove string that contain both letters and numbers in python

我有一个弦

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")

我不确定您在这里想要的是什么,但似乎您想删除其中包含数字的单词。 在这种情况下,您可以在此处使用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

还添加了基于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'

选择没有数字的单词

c = ' '.join([item for item in c.split() if not any(filter(str.isdigit, item))])
# ['Snap-on', 'Power', 'Imperial,IMPRL']

此答案与其他答案具有相同的作用

步骤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)

您可以尝试如下操作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM