Python|字符串中的异常拆分
有时,在使用字符串时,我们可能需要执行拆分操作。直接拆分很容易。但有时,我们可能会遇到需要对某些字符执行拆分但有例外的问题。这讨论了逗号分割,但逗号不应被括号括起来。让我们讨论可以执行此任务的某些方式。
方法 #1:使用循环 + strip()
这是我们执行此任务的蛮力方式。在此,我们将列表的每个元素构造为字符串中的单词,并使用括号和逗号来执行拆分。
# Python3 code to demonstrate working of
# Exceptional Split in String
# Using loop + split()
# initializing string
test_str = "gfg, is, (best, for), geeks"
# printing original string
print("The original string is : " + test_str)
# Exceptional Split in String
# Using loop + split()
temp = ''
res = []
check = 0
for ele in test_str:
if ele == '(':
check += 1
elif ele == ')':
check -= 1
if ele == ', ' and check == 0:
if temp.strip():
res.append(temp)
temp = ''
else:
temp += ele
if temp.strip():
res.append(temp)
# printing result
print("The string after exceptional split : " + str(res))
输出 :
The original string is : gfg, is, (best, for), geeks
The string after exceptional split : ['gfg', ' is', ' (best, for)', ' geeks']
方法 #2:使用regex()
这是可以执行此任务的另一种方式。在此,我们对括号逗号使用正则表达式而不是手动蛮力逻辑,并从拆分中省略它。
# Python3 code to demonstrate working of
# Exceptional Split in String
# Using regex()
import re
# initializing string
test_str = "gfg, is, (best, for), geeks"
# printing original string
print("The original string is : " + test_str)
# Exceptional Split in String
# Using regex()
res = re.split(r', (?!\S\)|\()', test_str)
# printing result
print("The string after exceptional split : " + str(res))
输出 :
The original string is : gfg, is, (best, for), geeks
The string after exceptional split : ['gfg', ' is', ' (best, for)', ' geeks']