Question: I am trying to extract a table into pandas from a website that is automatically updated on a regular basis. I tried:

```
from urllib.request import urlopen, Request
from bs4 import BeautifulSoup
website = 'http://www.dallasfirerescue.com/active_incidents.html'
req = Request(website)
abc = urlopen(req)
raw = abc.read().decode("utf-8") 
page = raw.replace('<!-->', '')
soup = BeautifulSoup(page, "html.parser")
table = soup.find("table")
print (table)

```

It gives me None

Answer: 
In Swift 4, the String initializer requires the `describing:` argument label. 

I don't know if this will solve your problem, but your first line of code should be written: 

```
self.adc_role_id = String(describing: res["adc_role_id"])

```
In your screenshot we can see that `res["adc_role_id"]` is an NSNumber.

To transform an NSNumber to a String you should use its `stringValue` property.

And since a dictionary gives an Optional, you should use optional binding to safely unwrap it.

Example:

```
if let val = res["adc_role_id"] {
    self.adc_role_id = val.stringValue
}

```

You could also, if you want, use string interpolation instead of the property:

```
if let val = res["adc_role_id"] {
    self.adc_role_id = "\(val)"
}

```

but I think using the property is more relevant.

If for some reason the compiler complains about the type of the content, cast it:

```
if let val = res["adc_role_id"] as? NSNumber {
    self.adc_role_id = val.stringValue
}

```

Note that you should *not* use `String(describing:)` because this initializer will try to represent the string in many ways, and some of them will give inaccurate and unexpected results (for example, if `String(describing:)` resolves to use the `debugDescription` property, as explained in the documentation, you may get a totally different string than the one you want). 

It's also worth noting that using `String(describing:)` with an optional value such as your dictionary will resolve to a wrong string: `String(describing: res["adc_role_id"])` will give `Optional(yourNumber)`! This is why Mike's answer is wrong. Be careful about this. My advice is to avoid using `String(describing:)` altogether unless for debugging purposes.