python - 修改代码以使用与上传的 CSV 不同的列中的字符替换数字
问题描述
我一直在努力修改下面的逻辑,如果下面提取的列的值:l[5] 是一个数字并且类似于_58982,它将简单地用下一列的值替换它在 CSV 文件中为 l[6],最终输出将变为:LEARNING_MAT。
下面是示例逻辑,但它没有按预期工作。
for l in self.lines[1:]:
try:
if(re.match(r'_[\d]{19}', l[5])):
print("Processing Line No : {}")
s = Sample(verified=True,
count=l[1],
intent=l[6].replace(':','_').replace('-', '_'),
token_tree=TokenTree(l[8]),
protected=self.protected)
else:
s = Sample(verified=True,
count=l[1],
intent=l[5].replace(':','_').replace('-', '_'),
token_tree=TokenTree(l[8]),
protected=self.protected)
except Exception as ex:
raise ValueError("Bad sample definition: %s (check tabs)" % l)
else:
print("Processing 5 No : {}")
ret.append(s)
解决方案
下面的代码适用于此 -
if(re.match(r'_[\d]{19}', l[5])):
unaccented_string = unidecode(l[6])
# surpassing all control characters, symbols and punctuations
res = "".join(char for char in unaccented_string if category(char)[0] not in ["C", "S", "P"])
#remove duplicate spaces
res = " ".join(res.split())
append_str = "X_"
if(res[:1].isdigit()):
res = append_str+res
s = Sample(verified=True,
count=l[1],
intent=str(res).replace(':','_').replace('-', '_').upper().replace(" ","_"),
token_tree=TokenTree(l[8]),
protected=self.protected)
ret.append(s)
推荐阅读
- python - 数据框字典中的圆形列
- xamarin.forms - 如何保存当前位置?
- c++ - 如何在 C++ 中关闭输入流?
- c# - Distinct() 在用户定义的对象列表上没有按预期工作,也没有调用 Equals 方法
- php - 有没有办法在从代码发送的电子邮件中添加个人资料图片
- reactjs - TypeError: undefined is not an object (评估 'row[OBJECT_COLUMN_NAME] = key') | 反应原生
- java - 升级到 RestEasy 4.5.x 后出现 StackOverflowError
- sql - 无法根据 SQL Server 2016 中的所需格式按结果分组
- spring-security - 使用 Spring Security 5.2+ 在多线程上下文中有效地授权客户端凭据 OAuth2ClientRequest
- c# - 从 IViewComponentHelper 扩展方法中调用 Component.InvokeAsync()