파이썬 (일반적으로 프로그래밍)을 처음 접했고 누군가 나를 도와 줄 수 있기를 바라고 있습니다. 현재 수동으로 수행하고 있지만 더 이상 실행할 수없는 작업을 자동화하려고합니다. 주어진 두 문자열 사이의 모든 문자열을 찾아서 쓰고 싶습니다. 예를 들어, 시작 및 종료 문자열이
XYZ-DF 000010
인 경우
그리고
XYZ-DF 000014
원하는 출력은
XYZ-DF 000010
여야합니다.
;와이즈 비즈
;와이즈 비즈
;와이즈 비즈
;와이즈 비즈
. 접두사와 숫자 (및 패딩)가 항상 같은 것은 아닙니다. 예를 들어, 목록에서 다음 시작 및 끝 문자열은
XYZ-DF 000011
일 수 있습니다.
그리고
XYZ-DF 000012
. 그러나 시작 및 끝 문자열 쌍의 접두사와 패딩은 항상 동일합니다.
접두사 (알파벳, 공백, 밑줄, 하이픈 등 포함)와 숫자를 분리하고 숫자에서 패딩을 제거하고 모든 시작 및 끝 문자열에 대해 숫자를 시작 숫자에서 끝 숫자로 1 씩 증가시켜야한다고 생각합니다 두 번째 루프에서 마지막으로 연결하여 출력을 가져옵니다.
지금까지 내가 가진 것 :
먼저 csv의 시작 및 끝 문자열 목록이 포함 된 2 개의 열을 팬더를 사용하여 목록으로 읽습니다.
XYZ-DF 000013
다음으로 zip 함수를 사용하여 "begs"와 "ends"를 반복합니다.
XYZ-DF 000014
루프 안에서, 각 문자열을 구 걸고 끝내고 (한 번에 한 쌍씩) 반복하고 싶습니다.
1) 정규식을 사용하여 문자 (알파벳, 공백, 밑줄, 하이픈 등)를 각 문자열의 숫자 (패딩 포함)와 한 번에 하나씩 분리하십시오.
ABC_XY00000001
2)이 작업 후에 start_num_stripped에서 end_num_stripped까지 중첩 된 while 루프를 실행하십시오
ABC_XY00000123
마지막으로, 시작 및 끝 문자열의 각 쌍에 대한 output_string을 시작 문자열, 종료 문자열 및 출력 문자열을 포함하는 3 개의 열이 포함 된 csv 파일에 작성하는 방법은 무엇입니까? csv 형식의 출력 예는 다음과 같습니다 (각 행 다음에 줄 바꿈이 명확하고 출력에 필요하지 않음).
"시작 문자열", "종료 문자열", "출력 문자열"
"ABCD-00001", "ABCD-00003", "ABCD-00001;ABCD-00002;ABCD-00003"
"XYZ-DF 000010", "XYZ-DF 000012", "XYZ-DF 000010;XYZ-DF 000011;XYZ-DF 000012"
"BBB_CC0000008", "BBB_CC0000014", "BBB_CC0000008;BBB_CC0000009;BBB_CC0000009;BBB_CC0000010;BBB_CC0000011;BBB_CC0000012;BBB_CC0000013;BBB_CC0000014"
columns = ['Beg', 'End']
data = pd.read_csv('C:/Downloads/test.csv', names=columns, header = None)
begs = data.Beg.tolist()
ends= data.End.tolist()
- 답변 # 1
관련 자료
- javascript - 두 값 사이의 숫자를 늘리고 범위 제한도 처리합니다
- c++17 - 유형이 아닌 템플릿 매개 변수가있는 클래스가 주어지면 인수 값 쌍에 대해 클래스가 친구로 정의 될 수 있습니까?
- javascript - 개체 값을 가능한 가장 낮게 정렬하는 방법
- mysql - 다른 테이블에 존재하지 않는 값을 반환하는 SQL 쿼리를 작성할 수 있습니까?
- jq를 사용하여 가능한 null 값으로 중첩 된 JSON 개체를 해제 하시겠습니까?
- azure active directory - Microsoft OAuth 응용 프로그램 권한/범위로 증분 인증을 수행 할 수 있습니까?
- javascript - 두 개체 배열간에 가능한 모든 조합을 만드는 방법은 무엇입니까?
- python - kivy의 클래스간에 값을 전달할 때 빈 값이 있습니까?
- python - 두 선 사이의 가능한 모든 가장 가까운 거리를 강조 표시
- sqlite - sql - 여러 값 집합간에 쿼리?
- Panda와 Python에서 이름을 기반으로 값 간의 관계 찾기
- python - 클래스 항목의 최신 항목을 찾고 pandas DataFrame에이 둘 사이에 몇 개의 값이 있는지 저장합니다
- python 3.x - Pandas datetime 열의 값 사이의 중간 점을 찾고 중간 점을 기반으로 시작 및 종료 기간 열 만들기
- Tableau에서 날짜 사이의 값 선택
- excel - 열에서 두 값 사이의 모든 값을 검색하고 마지막 값을 찾을 때까지 반복
- C ++ (코드 블록)에서 매개 변수 간의 값 혼합 문제
- jquery - 자바 스크립트의 두 선택 상자 사이의 모든 값 교체
- python - 두 배열 간의 가능한 최소 차이 찾기
- javascript - 배열 내부의 증분 값 매핑
- excel - ListObjects 간의 누락 된 값에 대한 동적 검색
- python : 일대다 관계 flask-sqlalchemy를 식별하는 적절한 방법입니까?
- PYTHON-최소 3자리 숫자 반환
- python : PyCharm은 dict 생성 속성의 확인되지 않은 속성에 대해 경고합니다.
- python : 지수 형식/과학 표기법 없이 십진수를 인쇄하는 방법은 무엇입니까?
- python : opencv에서 인수 오류가 계속 발생합니까?
- python : Sphinx는 :param 및 :return을 제대로 인식하지 못합니다.
- python : super가 항상 __init__에서 호출되어야 하는 이유
- python : 값이 두 번 이상 나타나면 값을 취하는 목록 만들기
- bash 스크립트에서 올바른 Python 설치를 동적으로 선택하십시오.
- python : 파이썬 함수에서 하드 코딩된 문자열 값을 피하는 방법
정규 표현식을 사용하여 가장 긴 후행 숫자 접미사를 찾을 수 있습니다. 그런 다음 처음부터 끝까지 숫자를 반복하여 공통 접두사에 선행 0을 추가합니다.
참고 : int ( "1"+ suffix)를 사용하면 범위의 숫자가 항상 접미사 길이 (1xxxxx)보다 1 자리가 더 많아집니다. 이렇게하면 첫 문자를 다시 문자열로 바꾸어 놓기 만하면 쉽게 선행 0을 얻을 수 있습니다.
str(n)[1:]
Note2 : 팬더에 익숙하지 않지만
result
에서 직접 CSV를 작성할 수있는 방법이 있다고 확신합니다 내가csvLine
에서했던 것처럼 수동으로 형식을 지정하는 대신 목록