4

标题如何在 Python 中执行 strtok() 在 C 中所做的事情?建议它应该回答我的问题,但我正在寻找的特定 strtok() 行为正在破坏分隔符字符串中的任何一个字符。也就是说,给定:

const char* delim = ", ";
str1 = "123,456";
str2 = "234 567";
str3 = "345, 678";

strtok() 查找数字的子字符串,而不管有多少来自 delim 的字符。Python 的 split 期望整个分隔字符串都在那里,所以我不能这样做:

delim = ', '
"123,456".split(delim)

因为它没有找到 delim 作为子字符串并返回单个元素的列表。

4

2 回答 2

5

如果您知道标记将是数字,您应该能够使用splitPythonre模块中的函数:

import re
re.split("\D+", "123,456")

更一般地说,您可以匹配任何分隔符:

re.split("[ ,]", "123,456")

或者:

re.split("[" + delim + "]", "123,456")
于 2012-07-26T17:43:48.740 回答
1

使用replace()将所有分隔符规范化为同一个字符,并split()对该字符进行 -ting 是处理更简单情况的一种方法。对于您的示例,replace(',',' ').split()应该可以工作(将逗号转换为空格,然后使用特殊的无参数形式split来拆分空格)。

在 Python 中,当事情开始变得过于复杂时splitreplace您通常会转向re模块;请参阅 Sam Mussmann 的更一般的答案。

于 2012-07-26T17:39:32.717 回答