MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Parsing awkward text in a nested list

  • To: mathgroup at smc.vnet.net
  • Subject: [mg107757] Re: Parsing awkward text in a nested list
  • From: Raffy <adraffy at gmail.com>
  • Date: Thu, 25 Feb 2010 07:45:37 -0500 (EST)
  • References: <hm56mc$k69$1@smc.vnet.net>

On Feb 24, 10:51 pm, Garapata <warsaw95... at mypacks.net> wrote:
> I have a nested list with the following dimensions:  {3,2,2}
>
> It looks something like this:
>
> list1 =
> {
> {{"item1", "{ text, text, text}"}, {"item2", 24}},
> {{"item1", "{ text, text, text}"}, {"item2", 24}},
> {{"item1", "{ text, text, text}"}, {"item2", 24}}
>
> }
>
> I want to get the following:
>
> list2 =
> {
> {{"item1", {"text", "text", "text"}}, {"item2", 24}},
> {{"item1", {"text", "text", "text"}}, {"item2", 24}},
> {{"item1", {"text", "text", "text"}}, {"item2", 24}}
>
> }
>
> I've come up with a very cumbersome way to do it:
>
> Diagonal[ReplacePart[list1,{#,1,2}->StringSplit[StringTrim[StringTrim[ li=
st1[[All,1,2]],("{"|"}")]],","]
>
> [[#]]]&/@Range[Length[list1]]]
>
> Can anyone suggest a simpler or more elegant solution.
>
> Thx.

Given that the proper way to parse "  {a   , b  ,c  } " is {"a", "b",
"c"} using the following rules:
1. StringTrim["  {a   , b  ,c  } "] = "{a   , b  ,c  }"
2. StringTake["{a   , b  ,c  }", {2, -2}] = "a   , b  ,c  "
3. StringSplit["a   , b  ,c  ", ","] = {"a   ", " b  ", "c  "}
4. StringTrim[{"a   ", " b  ", "c  "}] = {"a", "b", "c"}

I'd recommend:
list2 = list1;
list2[[All, 1, 2]] =
  StringTrim@StringSplit[StringTake[StringTrim[#], {2, -2}], ","] & /@
    list2[[All, 1, 2]];


  • Prev by Date: Re: Re: Handheld mathematica
  • Next by Date: Re: Transition to Wolfram Workbench
  • Previous by thread: Re: Parsing awkward text in a nested list
  • Next by thread: Controlling Memory Usage from JLink