Python and PYAML - yaml.scanner.ScannerError: mapping values are not allowed here

57,948

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
Share:
57,948
Admin
Author by

Admin

Updated on July 09, 2022

Comments

  • Admin
    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
    Tom Fenech about 7 years
    A simple way to improve your answer would be to show the correctly formatted YAML file.
  • nixmind
    nixmind almost 6 years
    I 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
    nixmind almost 6 years
    I 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
    robson over 4 years
    The error may also appear when you have wrong indentation in line. That was my case.
  • Gompu
    Gompu almost 4 years
    This 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
    Dave Liu almost 4 years
    Dear God... this was the problem.
  • jouell
    jouell about 2 years
    I literally hate YAML :)