3

次の類型を持つ約12Mbのファイルがあります

[["1",-154],["2",-100],["3",-28],["4",-66],["5",-222],["6",-309],["7",-196],["8",-50],["9",-53],["10",-209],["11",-355],["12",-350],["13",-269],["14",-264],["15",-392],["16",-513],["17",-515],["18",-434],["19",-418],["20",-505],["21",-592],["22",-559],["23",-422],["24",-384],["25",-539],["26",-716],["27",-713],["28",-593],["29",-534],["30",-647],["31",-813],["32",-857],["33",-711],["34",-582],["35",-594],["36",-700],["37",-721],["38",-600],["39",-487],["40",-490],["41",-589],["42",-630],["43",-502],["44",-365],["45",-340],["46",-403],["47",-420],["48",-291],["49",-136],["50",-98],["51",-218],["52",-285],["53",-198],["54",-52],["55",-58],["56",-213],["57",-334],["58",-301],["59",-195],["60",-195],["61",-324],["62",-470],["63",-465],["64",-378],["65",-381],["66",-546],["67",-734],["68",-767],["69",-695],["70",-683],["71",-804],["72",-991],["73",-1050],["74",-937],["75",-850],["76",-912],["77",-1041],["78",-1065],["79",-972],["80",-931],["81",-1030],["82",-1186],["83",-1233],["84",-1113],["85",-992],["86",-1051],["87",-1206],["88",-1299],["89",-1218],["90",-1112],["91",-1150],["92",-1287],["93",-1345],["94",-1239],["95",-1140],["96",-1147],["97",-1276],["98",-1363],["99",-1312],["100",-1206],["101",-1184],["102",-1297],["103",-1378],["104",-1297],["105",-1141],["106",-1113],["107",-1219],["108",-1325],["109",-1284],["110",-1147],["111",-1103],["112",-1179],["113",-1300],["114",-1262],["115",-1141],

Mathematica を使用して、引用符の間のすべての記号と数字を削除して、次の形式のスペースで区切られたままにしてクリーンアップしたいと思います。

-154 -100 -28 -66 -222 -309 -196 etc…

どうすればこれを行うことができますか?私は Mathematica にかなり慣れていないので、「HTML ファイルをきれいにする方法」または「ZIP ファイルをきれいにする方法」に関するチュートリアルでは、私の質問はあまり明確ではありませんでした。

4

3 に答える 3

3

それを文字列としてインポートし、 と に置き換えてから、[各タプルの最初の要素を.{]}EvalLast@Tranpose

data = Import["your_data.txt"];
Last@Transpose@
  ToExpression[StringReplace[data, {"[" -> "{", "]" -> "}"}]]

もちろん、これを行うにはもっと良い方法があります。スレーターのアイデアもうまく機能します。Mathematica でこの種のことを行う方法は文字通り無数にあります.

于 2012-06-12T22:08:28.850 に答える
3

Mathematica は一般的な文字列操作パッケージと同様に正規表現をサポートしています. 次のようなもの:

string = "[["1",-154],["2",-100],["3",-28],["4",-66]]"
StringSplit[string, "],["]

StringReplace[strings, RegularExpression["[\"[0-9]+\"]] -> " "]

少しいじる必要があるかもしれませんが、それがアイデアです。

于 2012-06-12T22:09:26.167 に答える
2

これを回避する別の方法を次に示しますToExpression(理論的には意図しないコードを実行する可能性があります)。

Import["data.txt", "Text"];

StringSplit[%, {"[[", "],[", "]]", ","}][[2 ;; ;; 2]];

StringJoin[Riffle[%, " "]]

Export["out.dat", %, "Text"]
于 2012-06-13T17:23:08.497 に答える