Python and PYAML - yaml.scanner.ScannerError: mapping values are not allowed here
Solution 1
Try putting spaces after the colons.
Solution 2
For anyone who comes here and finds that even if they have spaces after the colon, they still get this error
You can also get this error if you copy the yaml text from some formatted source (for me it was a Slack message). This will invisibly swap in non-ASCII characters that the standard YAML reader can't read, but which look the same.
Solution is to only copy from raw, non-ASCII source.
Solution 3
yaml files do not accept values immediately after the colon mark in the file content. Enter the value after a space, save the file and run again, the error will be gone. I had encountered the similar error during my automation using BDD, and got this fixed after a lot of debugging.
Solution 4
If someone comes here and has formatting and spaces right but the error persists.
Check if there is colon after the version! (me facepalming duh)
Error:
version '3.7'
services:
rabbitmq3:
image: rabbitmq:3-management
Fixed:
version: '3.7'
services:
rabbitmq3:
image: rabbitmq:3-management
Admin
Updated on July 09, 2022Comments
-
Admin almost 2 years
I am on ubunty 64 with python 2.7 and using PyYAML-3.10
Below is my yaml file:
host:localhost username:root password:test database:test operations_database:operations treeroot: branch1: name: Node 1 branch1-1: name: Node 1-1 branch2: name: Node 2 branch2-1: name: Node 2-1
When I run the below code I get the below error. But if I remove the lines above the treeroot the code works:
from yaml import load, dump try: from yaml import CLoader as Loader, CDumper as Dumper except ImportError: from yaml import Loader, Dumper f=open('amazon.yaml') data = load(f, Loader=Loader) Traceback (most recent call last): File "/home/ubuntu/workspace/Amazon-Products-Crawler-1/config_files/test_yaml.py", line 10, in <module> data = load(f, Loader=Loader) File "/usr/local/lib/python2.7/dist-packages/yaml/__init__.py", line 71, in load return loader.get_single_data() File "/usr/local/lib/python2.7/dist-packages/yaml/constructor.py", line 37, in get_single_data node = self.get_single_node() File "/usr/local/lib/python2.7/dist-packages/yaml/composer.py", line 36, in get_single_node document = self.compose_document() File "/usr/local/lib/python2.7/dist-packages/yaml/composer.py", line 58, in compose_document self.get_event() File "/usr/local/lib/python2.7/dist-packages/yaml/parser.py", line 118, in get_event self.current_event = self.state() File "/usr/local/lib/python2.7/dist-packages/yaml/parser.py", line 193, in parse_document_end token = self.peek_token() File "/usr/local/lib/python2.7/dist-packages/yaml/scanner.py", line 128, in peek_token self.fetch_more_tokens() File "/usr/local/lib/python2.7/dist-packages/yaml/scanner.py", line 220, in fetch_more_tokens return self.fetch_value() File "/usr/local/lib/python2.7/dist-packages/yaml/scanner.py", line 580, in fetch_value self.get_mark()) yaml.scanner.ScannerError: mapping values are not allowed here in "amazon.yaml", line 6, column 9
-
Tom Fenech about 7 yearsA simple way to improve your answer would be to show the correctly formatted YAML file.
-
nixmind almost 6 yearsI don't think it's just a matter of collon. I have the issue here while having after the collon... stackoverflow.com/questions/50914422/…
-
nixmind almost 6 yearsI don't think it's just a matter of collon. I have the issue here while having after the collon... stackoverflow.com/questions/50914422/…
-
robson over 4 yearsThe error may also appear when you have wrong indentation in line. That was my case.
-
Gompu almost 4 yearsThis worked for me since I was copying from a website directly. Once I deleted the file and wrote the whole yaml file myself, it worked. Such intricacies. Thanks
-
Dave Liu almost 4 yearsDear God... this was the problem.
-
jouell about 2 yearsI literally hate YAML :)