首页 > 解决方案 > 将大写字母与 CSV 文件中的数字分开

问题描述

我有一个大的 csv 文件,在同一行中有数字和字母。

我怎样才能在新列中只输入大写字母?

CSV 有这种格式

1AAOIAppli
2ABEOAbeon
3ABIOARCA
4ABUSArbut
5ACERAcer

...

我想像这样生成一个新的csv

AAOI
ABEO
ABIO
ABUS
ACER
...

过去两周一直在学习 python,我对此感到绝望,

谢谢你们

标签: pythonstringcsvuppercase

解决方案


使用pandas

import pandas as pd

# read in the file
df = pd.read_csv('test.csv', header=None)

# .isupper to check a character
# .join to join the letters back into a string
# [:4] to slice the first 4
df['upper'] = df[0].apply(lambda x: ''.join([letter for letter in x if letter.isupper()])[:4])

print(df)

          0 upper
 1AAOIAppli  AAOI
 2ABEOAbeon  ABEO
  3ABIOARCA  ABIO
 4ABUSArbut  ABUS
  5ACERAcer  ACER

# save only upper to a new file
df['upper'].to_csv('new_file.csv', index=False)

如果您想要所有大写字母而不是前 4 个

df['upper'] = df[0].apply(lambda x: ''.join([letter for letter in x if letter.isupper()]))

          0     upper
 1AAOIAppli     AAOIA
 2ABEOAbeon     ABEOA
  3ABIOARCA  ABIOARCA
 4ABUSArbut     ABUSA
  5ACERAcer     ACERA

推荐阅读