def parse_wyckoff_csv(wyckoff_file):
    """Parse Wyckoff.csv
    There are 530 data sets. For one example:
    9:C 1 2 1:::::::
    ::4:c:1:(x,y,z):(-x,y,-z)::
    ::2:b:2:(0,y,1/2):::
    ::2:a:2:(0,y,0):::
    """
    rowdata = []
    points = []
    hP_nums = [433, 436, 444, 450, 452, 458, 460]
    for i, line in enumerate(wyckoff_file):
        if line.strip() == 'end of data':
            break
        rowdata.append(line.strip().split(':'))
        if rowdata[-1][0].isdigit():
            points.append(i)
    points.append(i)
    wyckoff = []
    for i in range(len(points) - 1):
        symbol = rowdata[points[i]][1]
        if i + 1 in hP_nums:
            symbol = symbol.replace('R', 'H', 1)
        wyckoff.append({'symbol': symbol.strip()})
    for i in range(len(points) - 1):
        count = 0
        wyckoff[i]['wyckoff'] = []
        for j in range(points[i] + 1, points[i + 1]):
            if rowdata[j][2].isdigit():
                pos = []
                w = {'letter': rowdata[j][3].strip(), 'multiplicity': int(
                    rowdata[j][2]), 'site_symmetry': rowdata[j][4].strip(),
                    'positions': pos}
                wyckoff[i]['wyckoff'].append(w)
                for k in range(4):
                    if rowdata[j][k + 5]:
                        count += 1
                        pos.append(rowdata[j][k + 5])
            else:
                for k in range(4):
                    if rowdata[j][k + 5]:
                        count += 1
                        pos.append(rowdata[j][k + 5])
    return wyckoff
