python怎么把csv文件列表中字符串中的英文剔除啊,代码冗余度太大了,有没有简便的方法
正则匹配中文字符
来自chatgpt的回答
import re
file_list = ['file1.csv', 'file2英.csv', 'file3.csv', 'file4含有英文字母.csv']
# 定义匹配英文字符的正则表达式
pattern = re.compile(r'[a-zA-Z]')
# 使用列表推导式去除英文字符后的文件列表
new_file_list = [re.sub(pattern, '', f) for f in file_list]
print(new_file_list)
在这个示例代码中,我们使用了 re 模块中的 sub() 函数来将字符串中的英文字符替换为空串。该函数接受两个参数:第一个参数是要匹配的正则表达式,第二个参数是要替换成的字符串。
在本例中,我们使用 re.compile() 函数编译了一个匹配英文字符的正则表达式,并使用列表推导式来遍历文件列表并将其中每个字符串中的英文字符替换为空串。最后,我们打印出新的文件列表。
希望这个示例代码能够帮助到您。
没有去除左右两边空格,结果文件是源文件名+_out
代码示例如下:
import re
file_name = 'test.csv'
try:
with open(file_name, 'r') as file:
lines = file.readlines()
for i in range(len(lines)):
ls = lines[i].split(',')
for j in range(len(ls)):
ls[j] = re.sub('[a-zA-Z]', '', ls[j])
lines[i] = ','.join(ls)
with open(file_name + '_out', 'w') as file_out:
file_out.writelines(lines)
except Exception as err:
print(err)
我可以提供一种简便的方法来剔除CSV文件列表中的字符串中的英文字符。可以使用pandas库中的str.replace()方法来替换字符串中的英文字母,代码如下:
import pandas as pd
# 读取CSV文件列表
csv_list = ["file1.csv", "file2.csv", "file3.csv"]
for file in csv_list:
# 读取CSV文件
df = pd.read_csv(file)
# 剔除英文字母
df = df.apply(lambda x: x.str.replace('[a-zA-Z]', '') if x.dtype == "object" else x)
# 输出处理后的CSV文件
df.to_csv(file, index=False)
这段代码首先读取CSV文件列表,然后循环遍历每一个CSV文件,读取并处理数据。x.str.replace('[a-zA-Z]', '')
表示将字符串中所有的英文字母都替换为空字符串,x.dtype == "object"
表示只对字符串类型进行处理。处理完毕后用to_csv
方法将处理后的数据写入CSV文件中。
另外,如果要对每一列的最大值和平均值进行计算并添加到表的末尾,可以使用pandas库的describe
方法和mean
方法和max
方法,代码如下:
import pandas as pd
# 读取CSV文件
df = pd.read_csv("file.csv")
# 计算每一列的最大值和平均值
max_values = df.max()
mean_values = df.mean()
# 将计算结果添加到表的末尾
df.loc["max"] = max_values
df.loc["mean"] = mean_values
# 输出处理后的CSV文件
df.to_csv("file.csv", index=False)
这段代码首先读取CSV文件,然后使用max
方法和mean
方法计算每一列的最大值和平均值。然后使用loc
方法将计算结果添加到表的末尾,最后使用to_csv
方法将处理后的数据写入CSV文件中。