我刚刚开始用python编码,我有一个数据集,其中我的两个列给了我一些问题。其中一个人拥有艺术家的原籍国信息,其中一些人具有双重国籍,如:法国/美国。我试图只获得第一个国家,在这种情况下是法国。对于第二列,我有艺术家的名字,但其中一些有奇怪的字符,例如:GyÌ| rgy Kepes。什么是清理这些元素的最佳方法?如果这有任何帮助,我将按以下方式打开我的文件:
data = pd.read_csv(fpn_csv, encoding='ISO-8859-1')
我不知道这是否会以任何方式影响我的进程,但如果我使用UTF-8则无法打开文件
列的名称是:
country_of_origin和艺术家。
以下是我的文件示例:
+------+-------------------------------+-----------------------------+-------------------+-------------------------+------------+-----------------+
| ID | artist_title | art_movement | museum_venue | country_of_origin | has_text | primary_medium |
+------+-------------------------------+-----------------------------+-------------------+-------------------------+------------+-----------------+
| 361 | LÌÁszlÌ_ Moholy-Nagy | Vertical Black, Red, Blue | LACMA also MoMA | Hungary | FALSE | sculpture |
| 362 | BrassaÌø (Gyula HalÌÁsz) | Buttress of the Elevated | MoMA | Transylvania / France | FALSE | photography |
| 363 | M. C. Escher | Relativity | MoMA | Denmark | FALSE | print |
| 364 | Clyfford Still 1944-N No. 2 | abstract expressionism | MoMA | America | FALSE | painting |
| 365 | Harold E. Edgerton | Milk Drop | MoMA | America | FALSE | photography |
| 366 | Meret Oppenheim Object | surrealism | MoMA | Germany / Switzerland | FALSE | sculpture |
+------+-------------------------------+-----------------------------+-------------------+-------------------------+------------+-----------------+
答案 0 :(得分:0)
如果你想删除坏字符,你可以简单地编码为ascii。
>>> s = 'Gy̦rgy Kepes'
>>> s.encode('ascii', errors='ignore').decode()
Gyrgy Kepes
如果您不介意输出类型为bytes
另一种方法可能是使用filter
:
>>> import string
>>> good = set(string.printable) # 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
>>> s = 'Gy̦rgy Kepes'
>>> ''.join(filter(lambda x: x in good, s))
Gyrgy Kepes