如何在Python中将CSV列作为字符串读取

如何在Python中将CSV列作为字符串读取,python,pandas,csv,Python,Pandas,Csv,我用pandas编写代码,以便传入CSV并检索列,然后我有更多的代码应该使用re库分割数据,但它抛出一个错误,声明“TypeError:预期的字符串或字节类对象” 我相信在运行re之前,我只需要将CSV转换成字符串,但我不知道如何转换 CSV中的列包含如下数据:“HB1.A1D62no.0016、HB31.N33NO.89、HB54.N338” import pandas as pd data = pd.read_csv('HB_Lib.csv', delimiter = ',') s = [

我用pandas编写代码,以便传入CSV并检索列,然后我有更多的代码应该使用re库分割数据,但它抛出一个错误,声明“TypeError:预期的字符串或字节类对象”

我相信在运行re之前,我只需要将CSV转换成字符串,但我不知道如何转换

CSV中的列包含如下数据:“HB1.A1D62no.0016、HB31.N33NO.89、HB54.N338”

import pandas as pd

data = pd.read_csv('HB_Lib.csv', delimiter = ',')
s = [data[['Call Number']]]

import re

pattern = r"(^[a-z]+)\s*(\d+(?:\.\d+)?)"
print(list(map("".join, [re.findall(pattern, part, flags=re.I)[0] for part in s])))
回溯:

Traceback (most recent call last):

  File "C:/Python/test2.py", line 8, in <module>
    print(list(map("".join, [re.findall(pattern, part, flags=re.I)[0] for part in s])))

  File "C:/Python/test2.py", line 8, in <listcomp>
    print(list(map("".join, [re.findall(pattern, part, flags=re.I)[0] for part in s])))

  File "C:\Python37\lib\re.py", line 223, in findall
    return _compile(pattern, flags).findall(string)

TypeError: expected string or bytes-like object
回溯(最近一次呼叫最后一次):
文件“C:/Python/test2.py”,第8行,在
打印(列表(映射(“.join,[re.findall(pattern,part,flags=re.I)[0]表示s中的部分]))
文件“C:/Python/test2.py”,第8行,在
打印(列表(映射(“.join,[re.findall(pattern,part,flags=re.I)[0]表示s中的部分]))
文件“C:\Python37\lib\re.py”,第223行,findall中
返回编译(模式、标志).findall(字符串)
TypeError:应为字符串或类似字节的对象

我认为您应该做的第一件事是在声明s时移除外部方形制动器

因此,获得类似于:

a = data[['something']]

我认为您应该做的第一件事是在声明s时移除外部方形制动器

因此,获得类似于:

a = data[['something']]

您能提供回溯吗?您的问题可能在于您在
[data[[['Call Number]]]]
周围有额外的括号,它可能应该是
data['Call Number']
是的,先生。我添加了回溯。顺便说一句,这个csv看起来像什么?@jab去掉了双括号和外括号,最终解决了问题!(我以前试过其中一个都没有用。)谢谢你,先生。你能提供回溯吗?你的问题可能在于你在
[data[['Call Number']]]
周围有额外的括号,它可能应该是
data['Call Number']
是的,先生。我添加了回溯。顺便说一句,这个csv看起来像什么?@jab去掉了双括号和外括号,最终解决了问题!(我以前试过其中一个也没用。)谢谢你,先生。再加上去掉双括号,我的问题就解决了。谢谢@这是解决问题的方法,所以这就是答案。我们来这里是为了帮助人们,而不是为了获得分数。在这种情况下,你应该写一条评论,并投票以印刷错误(或在评论中标记结束)结束问题。这与删除双括号相结合,解决了我的问题。谢谢@这是解决问题的方法,所以这就是答案。我们来这里是为了帮助人们,而不是为了获得分数。在这种情况下,你应该写一条评论,并投票以印刷错误(或在评论中标记结束)结束问题。