我正在尝试废弃一堆类似的HTML网页,这些标签是噩梦噩梦。 我找到了使用,
IList<IWebElement> all = driver.FindElements(By.TagName("p"));
带来了非常好的结果。这是我可以使用它的不同字符串:
1 txt 2 txt txt txt, 3 txt txt.
4 txt
5 txt 6 txt
7 txt
"txt
txt
txt"
8 txt.
我基本上想要将数字和文本分开来保存它们之间的关系。 基本上,每一行都是一个不同的字符串(它是一个不同的p元素),包括空字符串。 我能想到的最好的方法是生成一个键值对,但我无法提取数字和文本并保留它们的关系。 我正在尝试使用Split方法
Regex.Split(input, pattern);
我觉得这些字符串不会很好用。有什么想法吗?期望的结果将是如下列表:
1: [1, txt]
2: [2, txt txt txt,]
3: [3, txt.]
4: [4, txt]
5: [5, txt]
6: [6, txt]
7: [7, txt "txt txt txt"]
8: [8, txt.]
答案 0 :(得分:0)
试试这个,
Dictionary<int, string> dict = new Dictionary<int, string>();
int key = -100; string value = "";
foreach(IWebElement element in all)
{
foreach (var str in element.Text.Split(' '))
{
int new_key;
if (int.TryParse(str.Trim(), out new_key))
{
if (value == "")
key = new_key;
else
{
dict[key] = value.Trim();
value = "";
key = new_key;
}
}
else
{
value += str + " ";
}
}
dict[key] = value.Trim();
}
我的代码确实假设文本中没有整数字,如“1 txt txt txt 3 txt”,其中3是文本的一部分而不是键。只要有整数,此代码就会将其视为字典的键。