为了账号安全,请及时绑定邮箱和手机立即绑定

如何检查Python中的逗号分隔字符串仅包含单个逗号?

如何检查Python中的逗号分隔字符串仅包含单个逗号?

qq_花开花谢_0 2023-07-18 14:57:30
我正在尝试检查 python 中逗号分隔字符串的有效性。也就是说,字符串可能包含错误,即使用了多个逗号。这是一个有效的字符串:foo = "a, b, c, d, e"这是一个有效的字符串,因为它是用逗号分隔的;仅一个逗号,而不是多个或仅空格。这是一个无效的字符串:invalid = "a,, b, c,,,,d, e,,; f, g"无效字符串无效,因为 (1) 它使用了多个逗号,并且 (2) 它还使用了分号;。检查字符串是否有效的最有效方法是什么?我的第一次尝试是尝试这样的事情:def check_valid_string(input_string):    if ",," in input_string or ";" in input_string:        return "Not valid" ## or False    else:        return "Valid" ## or True但是,尚不清楚这是否会捕获所有可能的无效字符串。我也不清楚这种方法是否是计算效率最高(即速度最快)的方法。
查看完整描述

2 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

看来实现此目的的最佳方法是使用正则表达式:


这是一个有效的字符串:


valid = "a, b, c, foo, bar, dog, cat"

以下是各种无效字符串:


## invalid1 is invalid as it contains multiple , i.e. `,,` and :

invalid1 = "a,, b, c,,,,d, e,,; f, g" 


## invalid2 is invalid as it contains `, ,`

invalid2 = "a b, ,c, d, e"


## invalid3 is invalid as it contains spaces between strings

invalid3 = "a, b, d, elephant, f g"

这是检查字符串是否有效的正则表达式:


import re

pattern = re.compile(r"^(\w+)(,\s*\w+)*$")


def check_valid(input_string):

    if pattern.match(input_string) == None:

        return "Invalid"

    else:

        return "Valid"

这是函数:


>>> check_valid(invalid)

'Invalid'

>>> check_valid(invalid2)

'Invalid'

>>> check_valid(invalid3)

'Invalid'

>>> check_valid(valid)

'Valid'


查看完整回答
反对 回复 2023-07-18
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

这里你有一些方法来检查它是否有效:


def is_valid(comma_sep_str):

  if ';' in comma_sep_str or ',,' in comma_sep_str:

    return 'Not valid'

  else:

    return 'Valid'


myString1 = "a,, b, c,,,,d, e,,; f, g"

myString2 = "a, b, c, d, e"


print(is_valid(myString1))

print(is_valid(myString2))

PS:也许不是最有效的,但它会检查是否有效。请注意,在所有错误的情况下,您始终至少会遇到以下两个之一:“,,”或“;”。


查看完整回答
反对 回复 2023-07-18
  • 2 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信