python,找到csv某一列中和一个指定字符串分号后面开始的前12位不同,后35位相同的,距离最近的其他字符串所对应的行号。
时间: 2023-05-19 15:01:48 浏览: 69
python pandas获取csv指定行 列的操作方法
这个问题可以通过以下代码来解决:
```python
import csv
import difflib
# 打开CSV文件
with open('file.csv', 'r') as file:
reader = csv.reader(file)
rows = list(reader)
# 指定字符串
target_string = '指定字符串'
# 遍历每一行,找到符合条件的行
matching_rows = []
for i, row in enumerate(rows):
if len(row) > 0:
# 获取当前行的某一列
column = row[0]
# 判断是否符合条件
if target_string in column:
# 获取分号后面开始的前12位和后35位
start_index = column.index(target_string) + len(target_string) + 1
end_index = start_index + 35
target_substring = column[start_index:end_index]
# 遍历其他行,找到距离最近的其他字符串
closest_string = ''
closest_distance = 100
for j, other_row in enumerate(rows):
if i != j and len(other_row) > 0:
other_column = other_row[0]
other_substring = other_column[start_index:end_index]
distance = difflib.SequenceMatcher(None, target_substring, other_substring).ratio()
if distance < closest_distance:
closest_distance = distance
closest_string = other_column
# 将符合条件的行号添加到列表中
matching_rows.append((i, closest_string))
# 找到距离最近的行号
closest_row = min(matching_rows, key=lambda x: abs(x[0]-i))[0]
print(closest_row)
```
这段代码会打开一个名为 `file.csv` 的 CSV 文件,遍历每一行,找到符合条件的行,并在其他行中找到距离最近的字符串。最后,它会返回距离最近的行号。
阅读全文