【发布时间】:2018-10-31 08:26:11
【问题描述】:
我有一个正则表达式,我想将其应用于 CSV 文件的每一行。
这里的函数基本上删除了在单个数字之前遇到的所有逗号。 函数对字符串工作得很好。
Input : text = "52A, XYZ Street, ABC District, 2, M, Brown
Function : re.sub('(?<!\s[\dA-Z]),(?!\s+\d,?)', '', text)
Output : '52A XYZ Street ABC District, 2, M, Brown'
但是,我有一个包含数百行此类行的 CSV 文件。比如
1, 5273249, 1061/72, 150-CF, S/O:XVZ, 1, ABX, 45, 0, Husband, 9213
1, 5272849, 1063/36, 150-AS, S/O:XVZ, 1, ABX, 45, 0, Wife, 9253
1, 5274549, 10626/12, 150-RT, S/O:XVZ, 1, ABX, 45, 0, Son, 9214
我尝试使用 CSV 阅读器读取它并应用该功能,但不幸的是,它没有产生任何输出。我在这里做错了什么:
def myFunction(text):
return re.sub('(?<!\s[\dA-Z]),(?!\s+\d,?)', '', text)
import csv
with open('temp1.csv', 'r') as csvfile:
spamreader = csv.reader(csvfile, delimiter=',')
for row in spamreader:
l = ','.join(row)
myFunction(l)
【问题讨论】:
-
你期望什么输出?此代码中的文件中没有打印或写入任何内容
-
myFunction是否返回任何内容?如果是这样,您应该做的第一件事是将其分配给变量,否则输出将丢失。 -
@MatiasCicero 是的,myFunction 作为独立函数返回正确的输出。但不是当我在读取 CSV 方法中调用它时。由于某种原因,输出丢失了。
-
@PRMoureu 我希望在 S/0:XYZ 之后第二次出现 1 之前删除逗号
-
@RohitGirdhar 它总是返回值,但如果你不以任何方式处理它,它只会丢失在 void 中。输出不会自己写入文件。
标签: python csv nlp data-cleaning