Относится к @ t.m.adam
Вы можете использовать следующее регулярное выражение для извлечения из исходного HTML. Используйте флаг DOTALL , чтобы разрешить перевод строк. User-Agent требуется в заголовках.
import requests
import re
import json
url = 'https://www.icra.in/Rationale/Index?CompanyName=20%20Microns%20Limited'
headers = {
'User-Agent' : 'Mozilla/5.0'
}
r = requests.get(url, headers = headers)
data = re.search('var Model =(.*?);\s+Ratinoal', r.text, flags=re.DOTALL).group(1)
result = json.loads(data)
for item in result['LstrationaleDetails']:
print(item)
Значения DateTime являются неизменными . Метод Add возвращает новое значение DateTime с добавленным TimeSpan .
Это работает:
Console.WriteLine("A day after the day: " + date.Add(t).ToString());
ДТБ прав, что DateTime
неизменен. Подумайте об этом так: a DateTime
- это тип значения, который относит его к той же категории, что и int
или double
. Экземпляры этих структур не могут быть изменены; их можно только оценить и скопировать.
Рассмотрим этот код:
int i = 4;
i + 2; // does not compile, but what if it did?
// would i become 6? clearly not --
// i + 2 expresses a NEW value, which can
// be copied somewhere
i = i + 2; // there we go -- that's better
Это аналогично:
DateTime d = DateTime.Now;
TimeSpan t = TimeSpan.FromDays(1.0);
d.Add(t); // compiles (because AddDays is a function),
// but is really the same as i + 2 above
d = d.Add(t); // that's better
Кстати, одна вещь, которая может помочь сделать это более понятным, это осознание того, что приведенная выше строка, d = d.Add(t)
, так же, как d = d + t
. И вы не написали бы d + t
в отдельной строке, точно так же, как вы не написали бы i + 2
в отдельной строке.
Что плохого в том, чтобы просто делать date = date.AddDays(1)
?
DateTime является неизменным, но функции Add и Subtract возвращают новые DateTimes, которые вы можете использовать.
DateTime tomorrow = DateTime.Now.AddDays(1);
Результат date.Add(t) - это то, что вам нужно:
DateTime date = new DateTime(2010, 4, 29, 10, 25, 00);
TimeSpan t = new TimeSpan(1, 0, 0, 0);
// The change is here, setting date to be the *new* date produced by calling Add
date = date.Add(t);
Console.WriteLine("A day after the day: " + date.ToString());
date.Add(t);
возвращает измененный DateTime и не изменяет исходный экземпляр, для которого вы вызываете метод Add.