4

「 Pythonで、Cでstrtok()が行うことをどのように行うのですか?」というタイトル。私の質問に答える必要があることを示唆していますが、私が探している特定のstrtok()の動作は、区切り文字列のいずれかの文字で壊れています。つまり、与えられた:

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

strtok()は、delimの文字数に関係なく、数字の部分文字列を検索します。Pythonの分割では、区切り文字列全体が存在することを想定しているため、次のことはできません。

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

これは、部分文字列としてdelimを検出せず、単一要素のリストを返すためです。

4

2 に答える 2

5

splitトークンが数字になることがわかっている場合は、Pythonのreモジュールの関数を使用できるはずです。

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を使用することは、より単純なケースに対処する1つの方法です。あなたの例では、replace(',',' ').split()うまくいくはずです(コンマをスペースに変換してからsplit、空白の実行で分割するための特別な引数なしの形式を使用します)。

Pythonでは、物事が複雑にsplitなり始めreplace、通常はreモジュールに目を向けます。SamMussmannのより一般的な回答を参照してください。

于 2012-07-26T17:39:32.717 に答える