Красивый суп - измените существующий контент HTML - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь добавить строку <input type="text" onkeyup="myFunction()"><br> к каждой из строк ниже в моем HTML-файле после тега <th>.

Я ищу общее решение, так как строки WW могутменять. Например, WW32 может измениться на WW58 при следующем создании файла HTML.

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

Текущий код HTML:

  <th>KEY</th>
  <th>DEVREVSTEP</th>
  <th>WW32</th>
  <th>WW33</th>
  <th>WW34</th>
  <th>WW35</th>
  <th>WW36</th>
  <th>WW37</th>
  <th>WW38</th>
  <th>WW39</th>
  <th>WW40</th>
  <th>Rule</th>
  <th>LINK</th>

Требуемый код HTML:

<th><input type="text" onkeyup="myFunction()"><br>KEY</th>
<th><input type="text" onkeyup="myFunction()"><br>DEVREVSTEP</th>
<th><input type="text" onkeyup="myFunction()"><br>WW32</th>
<th><input type="text" onkeyup="myFunction()"><br>WW33</th>
<th><input type="text" onkeyup="myFunction()"><br>WW34</th>
<th><input type="text" onkeyup="myFunction()"><br>WW35</th>
<th><input type="text" onkeyup="myFunction()"><br>WW36</th>
<th><input type="text" onkeyup="myFunction()"><br>WW37</th>
<th><input type="text" onkeyup="myFunction()"><br>WW38</th>
<th><input type="text" onkeyup="myFunction()"><br>WW39</th>
<th><input type="text" onkeyup="myFunction()"><br>WW40</th>
<th><input type="text" onkeyup="myFunction()"><br>Rule</th>
<th><input type="text" onkeyup="myFunction()"><br>LINK</th>

Полный код файла HTML:

<html>
<head>
</head>
<body>

    <h2> Title here </h2>
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names.." title="Type in a name"><table border="1" class="dataframe wide" id="myTable">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>KEY</th>
      <th>DEVREVSTEP</th>
      <th>WW32</th>
      <th>WW33</th>
      <th>WW34</th>
      <th>WW35</th>
      <th>WW36</th>
      <th>WW37</th>
      <th>WW38</th>
      <th>WW39</th>
      <th>WW40</th>
      <th>Rule</th>
      <th>LINK</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>First</td>
      <td>A</td>
      <td>-0.64</td>
      <td>6.47</td>
      <td>23.14</td>
      <td>2.5</td>
      <td>0.13</td>
      <td>-0.41</td>
      <td>-0.59</td>
      <td>-0.31</td>
      <td>33.13</td>
      <td>A</td>
      <td>Google.com</td>
    </tr>
    <tr>
      <th>1</th>
      <td>Second</td>
      <td>B</td>
      <td>-18.04</td>
      <td>-18.42</td>
      <td>-17.44</td>
      <td>-16.35</td>
      <td>-19.06</td>
      <td>-17.49</td>
      <td>-18.62</td>
      <td>-17.92</td>
      <td>-18.23</td>
      <td>C</td>
      <td>Amazon.com</td>
    </tr>
    <tr>
      <th>2</th>
      <td>Third</td>
      <td>C</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>-0.59</td>
      <td>2.25</td>
      <td>-0.33</td>
      <td>0.55</td>
      <td>-0.53</td>
      <td>8.96</td>
      <td>17.53</td>
      <td>B</td>
      <td>Ebay.com</td>
    </tr>
    <tr>
      <th>3</th>
      <td>Fourth</td>
      <td>A</td>
      <td>-0.18</td>
      <td>3.25</td>
      <td>7.63</td>
      <td>1.90</td>
      <td>-0.19</td>
      <td>0.41</td>
      <td>0.15</td>
      <td>0.20</td>
      <td>17.31</td>
      <td>A</td>
      <td>Yahoo.com</td>
    </tr>
    <tr>
      <th>4</th>
      <td>MT6@DCCD@NEST@X-BAR</td>
      <td>A</td>
      <td>0.24</td>
      <td>-3.25</td>
      <td>-6.42</td>
      <td>-1.51</td>
      <td>0.60</td>
      <td>-0.01</td>
      <td>0.25</td>
      <td>-0.02</td>
      <td>-15.13</td>
      <td>A</td>
      <td>MSN.com</td>
    </tr>
    <tr>
      <th>5</th>
      <td>First</td>
      <td>D</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>5.06</td>
      <td>NaN</td>
      <td>1.27</td>
      <td>-0.56</td>
      <td>13.24</td>
      <td>A</td>
      <td>Google.com</td>
    </tr>

  </tbody>
</table>

</body>
</html>

1 Ответ

0 голосов
/ 11 октября 2019

Это можно сделать без помощи красивого супа. Вам просто нужно прочитать HTML-файл как текст и использовать приведенную ниже функцию поиска и замены для записи в файл.

import fileinput
import sys

def replaceAll(file,searchExp,replaceExp):
    for line in fileinput.input(file, inplace=1):
        if searchExp in line:
            line = line.replace(searchExp,replaceExp)
        sys.stdout.write(line)

replaceAll("CDs_Report.html","<th>KEY</th>",'<th><input type="text" onkeyup="myFunction()"><br>KEY</th>')
replaceAll("CDs_Report.html","<th>DEVREVSTEP</th>",'<th><input type="text" onkeyup="myFunction()"><br>DEVREVSTEP</th>')
replaceAll("CDs_Report.html","<th>WW",'<th><input type="text" onkeyup="myFunction()"><br>WW')
replaceAll("CDs_Report.html","<th>Rule</th>",'<th><input type="text" onkeyup="myFunction()"><br>Rule</th>')
replaceAll("CDs_Report.html","<th>LINK</th>",'<th><input type="text" onkeyup="myFunction()"><br>LINK</th>')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...