📜  Python - 删除标点元组

📅  最后修改于: 2022-05-13 01:55:17.817000             🧑  作者: Mango

Python - 删除标点元组

有时,在使用Python元组时,我们可能会遇到一个问题,即我们需要删除所有元组中包含标点符号的元组。此类问题可能出现在数据过滤应用程序中。让我们讨论可以执行此任务的某些方式。

方法 #1:使用any() + list comprehension + string.punctuation
上述功能的组合可以用来解决这个问题。在此,我们使用字符串.punctuations 执行识别标点符号的任务,并且 any() 用于测试元素是否属于任何标点符号。

# Python3 code to demonstrate working of 
# Remove Punctuation Tuples
# Using any() + list comprehension + string.punctuation
import string
          
# initializing list
test_list = [('.', ', '), ('!', 8), (5, 6), (';', 10)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Remove Punctuation Tuples
# Using any() + list comprehension + string.punctuation
res = [idx for idx in test_list if not any(punc in idx 
                      for punc in string.punctuation)]
  
# printing result 
print("Tuples after punctuation removal : " + str(res)) 
输出 :
The original list is : [('.', ', '), ('!', 8), (5, 6), (';', 10)]
Tuples after punctuation removal : [(5, 6)]

方法 #2:使用regex() + filter() + lambda + string.punctuation
上述功能的组合可以用来解决这个问题。在此,我们执行使用正则表达式识别标点符号和使用 filter() + lambda 过滤的任务。仅限于处理字符串和检查特定索引。

# Python3 code to demonstrate working of 
# Remove Punctuation Tuples
# Using regex() + filter() + lambda + string.punctuation
import string
import re
          
# initializing list
test_list = [('.', ', '), ('!', '8'), ('5', '6'), (';', '10')]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Remove Punctuation Tuples
# Using regex() + filter() + lambda + string.punctuation
temp = re.compile('[{}]'.format(re.escape(string.punctuation)))
res = list(filter(lambda tup: not temp.search(tup[0]), test_list))
  
# printing result 
print("Tuples after punctuation removal : " + str(res)) 
输出 :
The original list is : [('.', ', '), ('!', '8'), ('5', '6'), (';', '10')]
Tuples after punctuation removal : [('5', '6')]