这是我的测试数据(采用csv格式):
"id","user_id","value"
"1","1001","111"
"2","1002","222"
"3","h82kn9;2&3","333"
"4","jsidofj882","444"
目标是使用字符串user_id
消除所有行。我想知道如何测试每一行的内容(对应于某一列)是否为字符串。它可以是任何字符串。
我已经在编写代码时迈出了步骤,但我不得不承认我不知道如何继续if
部分。
import csv
reader = csv.reader(open("file.csv", "rb"), delimiter=",", quotechar='"')
for line in reader:
if ##column 'user_id' is not a string##
print line
任何提示都将不胜感激。
答案 0 :(得分:2)
您可以使用str.isdigit()
来测试字符串是否只包含数字:
if line[1].isdigit():
# all digits
演示:
>>> "1001".isdigit()
True
>>> "jsidofj882".isdigit()
False
答案 1 :(得分:2)
此解决方案使用Pandas库pandas library。我将按以下步骤进行操作
import pandas as pd
df = pd.read(your_file)
来自您提供的字符串:
导入StringIO df = pd.read_csv(StringIO.StringIO(your_csf_file_as_a_string))
df包含一个包含所有数据的数据框:
id user_id value
0 1 1001 111
1 2 1002 222
2 3 h82kn9;2&3 333
3 4 jsidofj882 444
现在是我们选择感兴趣的列(user_id)的过滤,并通过选择仅包含数字的字符串进行过滤:
filtered_df = df[df['user_id'].apply(lambda x: str(x).isdigit())]
filtered_df只包含预期的前两行:
id user_id value
0 1 1001 111
1 2 1002 222