标题我如何在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 作为子字符串并返回单个元素的列表。
使用
replace()
将分隔符全部标准化为同一字符,并对该字符使用 split()
-ting,是处理更简单情况的一种方法。对于您的示例, replace(',',' ').split()
应该可以工作(将逗号转换为空格,然后使用 split
的特殊无参数形式来分割空格)。
在 Python 中,当事情开始变得对于
split
和 replace
来说太复杂时,你通常会转向 re
模块;请参阅 Sam Mussmann 更一般的答案。
def strtok(mystr,delim):
nlist=[]
nelem=""
for c in mystr:
if c in delim:
if nelem!="":
nlist.append(nelem)
nelem=""
nlist.append(c)
else:
nelem+=c
if nelem!="":
nlist.append(nelem)
return nlist
print(strtok("wow - noway. - can't be.",".-' "))
print(strtok("123,456",", "))