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

我正在尝试检查 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

但是,尚不清楚这是否会捕获所有可能的无效字符串。我也不清楚这种方法是否是计算效率最高(即速度最快)的方法。


qq_花开花谢_0
浏览 136回答 2
2回答

墨色风雨

看来实现此目的的最佳方法是使用正则表达式:这是一个有效的字符串: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 stringsinvalid3 = "a, b, d, elephant, f g"这是检查字符串是否有效的正则表达式:import repattern = 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'

慕哥9229398

这里你有一些方法来检查它是否有效: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:也许不是最有效的,但它会检查是否有效。请注意,在所有错误的情况下,您始终至少会遇到以下两个之一:“,,”或“;”。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python