I performance blastn (-m 8) using a query file of many sequences, and for each query sequence, the output contains many fragmental hits of significance.

however, these hits have no overlap, and what is interesting is that most gaps < 300bp (much shorter than full-length of the query sequence).

so, how can i concatenate those closely related hits into one via setting a value (e.g 300bp) when these hits match the same subject (different regions), ——also to reduce the number of output hits per query.

You can use Biopython to parse the blast output and then concatenate the sequences that match your criteria. I would not recommend parsing the tabular output though, instead re-run blast and get the results in xml format since the that is easier to parse using a script.

In the biopython tutorial the chapters you would be interested in are 3, 4, 5, and 7.