34

リストのテンプレートは次のとおりです。

EmployeeList =  [u'<EmpId>', u'<Name>', u'<Doj>', u'<Salary>']

ここから変換したい

EmployeeList =  [u'1001', u'Karick', u'14-12-2020', u'1$']

これに:

EmployeeList =  ['1001', 'Karick', '14-12-2020', '1$']

変換後、実際に EmployeeList.values() に「1001」が存在するかどうかを確認しています。

4

9 に答える 9

54

リスト内の各値を文字列にエンコードします。

[x.encode('UTF8') for x in EmployeeList]

有効なエンコーディングを選択する必要があります。システムのデフォルト (ASCII の Python 2 の場合) を使用するため、使用しないstr()でください。これは、Unicode 値で可能なすべてのコードポイントをエンコードしません。

UTF-8 はすべての Unicode 標準をエンコードできますが、ASCII 範囲外のコードポイントは文字ごとに複数バイトになります。

ただし、特定の文字列をテストするだけの場合は、Unicode文字列をテストします。Python は、そのテスト時にすべての値を自動エンコードする必要はありません。

u'1001' in EmployeeList.values()
于 2013-08-16T11:18:54.183 に答える
20

[str(x) for x in EmployeeList]は変換を行いますが、Unicode 文字列の文字が ASCII の範囲内にない場合は失敗します。

>>> EmployeeList = [u'1001', u'Karick', u'14-12-2020', u'1$']
>>> [str(x) for x in EmployeeList]
['1001', 'Karick', '14-12-2020', '1$']


>>> EmployeeList = [u'1001', u'करिक', u'14-12-2020', u'1$']
>>> [str(x) for x in EmployeeList]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)
于 2013-08-16T11:17:21.657 に答える
14

map機能が使える

print map(str, EmployeeList)
于 2016-04-15T06:17:54.123 に答える
5

どうですか:

def fix_unicode(data):
    if isinstance(data, unicode):
        return data.encode('utf-8')
    elif isinstance(data, dict):
        data = dict((fix_unicode(k), fix_unicode(data[k])) for k in data)
    elif isinstance(data, list):
        for i in xrange(0, len(data)):
            data[i] = fix_unicode(data[i])
    return data
于 2013-08-16T12:24:34.373 に答える
0

これを行うにはいくつかの方法があります。私はこのように変換しました

def clean(s):
    s = s.replace("u'","")
    return re.sub("[\[\]\'\s]", '', s)

EmployeeList = [clean(i) for i in str(EmployeeList).split(',')]

その後、確認できます

if '1001' in EmployeeList:
    #do something

それがあなたを助けることを願っています。

于 2018-10-04T08:54:38.160 に答える