AttributeError:“ str”对象没有属性“ match”

时间:2019-01-24 16:15:23

标签: python

代码:

import pandas as pd

input = pd.read_csv("resale-flat-prices.csv", header=None)

ans = []

for row in input:
    if(input.iloc[row,2].match("3 ROOM") and input.iloc[row,7].match("ADJOINED FLAT")):
        ans.append(input[row])

print(ans)

要从具有以下匹配项的csv文件中查找数据行并将其附加到新列表中,我该如何检查和匹配字符串项?

更新:

我使用“ in”运算符进行了如下编辑:

if(input.iloc [row,2]中为“ 3 ROOM”,input.iloc [row,7]中为“ ADJOINED FLAT”):

产生的结果为空列表,问题出在csv文件的读取上吗?

csv文件中的前三行数据:

1990-01 | ANG MO KIO | 1间客房| 309 | ANG MO KIO AVE 1 | 04至06 | 31 |改进| 1977 | 6000
1990-01 | ANG MO KIO | 1间客房| 309 | ANG MO KIO AVE 1 | 07至09 | 31 |改进| 1977 | 6000
1990-01 | ANG MO KIO | 1间客房| 309 | ANG MO KIO AVE 1 | 10至12 | 31 |改进| 1977 | 8000

共有10列

2 个答案:

答案 0 :(得分:1)

要检查字符串是否相等,只需使用==运算符:

>>> my_string = "3 ROOM"
>>> my_string == "3 ROOM"
True
>>> my_string == "3 ROOMS"
False

要检查字符串是否包含子字符串,请使用in运算符:

>>> my_string = "13 ROOMS"
>>> "3 ROOM" in my_string
True
>>> "30 ROOM" in my_string
False

要进行更高级的字符串比较,您可能需要使用regular expressions

>>> import re
>>> my_string = "3 ROOM"
>>> re.match(r"^\d ROOM$", my_string)
<_sre.SRE_Match object at 0x7f4ac226bb90>
>>> re.match(r"^\d ROOMS$", my_string)
None

答案 1 :(得分:0)

如果不需要正则表达式,则可以使用运算符in

 for row in input:
     if("3 ROOM" in input.iloc[row,2] and "ADJOINED FLAT" in input.iloc[row,7]):
         ans.append(input[row])