Ошибка при выполнении оператора в целом, но работает при запуске по одному на верхнем уровне

, если вы хотите искать только имя атрибута с любым значением

from bs4 import BeautifulSoup
import re

soup= BeautifulSoup(html.text,'lxml')
results = soup.findAll("td", {"valign" : re.compile(r".*")})
0
задан user42493 15 January 2019 в 19:37
поделиться

1 ответ

Эта фраза

let table = [1;2;3] in (List.length table) |> permuteBool

является высшим (глобальным) выражением. Такое выражение необходимо отделить от определений верхнего уровня двойной точкой с запятой:

let rec permuteBool n =
  match n with
  | 0 -> [[]]
  | k -> (List.map (fun x-> true::x) (permuteBool (n-1))) @ 
 (List.map (fun x -> false::x) (permuteBool (n-1)))

;; let table = [1;2;3] in (List.length table) |> permuteBool

Когда вы ввели две фразы по отдельности, вы случайно написали эту требуемую двойную точку с запятой ;;, таким ошибка исчезла.

Более идиоматический подход состоит в том, чтобы всегда связывать такое выражение в определении верхнего уровня:

let rec permuteBool n =
  match n with
  | 0 -> [[]]
  | k -> (List.map (fun x-> true::x) (permuteBool (n-1))) @ 
 (List.map (fun x -> false::x) (permuteBool (n-1)))

let _ = (* here _ is used to discard the result *)
  let table = [1;2;3] in (List.length table) |> permuteBool

или, если вы не хотите отбрасывать результат:

let result = (* here _ is used to discard the result *)
  let table = [1;2;3] in (List.length table) |> permuteBool
0
ответ дан octachron 15 January 2019 в 19:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: